rocketmq簡單消息發送

来源:https://www.cnblogs.com/peachyy/archive/2018/08/02/9406536.html
-Advertisement-
Play Games

有以下3種方式發送RocketMQ消息 可靠同步發送 reliable synchronous 可靠非同步發送 reliable asynchronous 單向發送 one-way transmission 可靠同步發送 主要運用在比較重要一點消息傳遞/通知等業務 可靠非同步發送 通常用於對發送消息響應 ...


有以下3種方式發送RocketMQ消息

  • 可靠同步發送 reliable synchronous
  • 可靠非同步發送 reliable asynchronous
  • 單向發送 one-way transmission

可靠同步發送

主要運用在比較重要一點消息傳遞/通知等業務

public class SyncProducer {
    public static void main(String[] args) throws Exception {
        DefaultMQProducer producer = new
            DefaultMQProducer("test");
        producer.start();
        for (int i = 0; i < 100; i++) {
            Message msg = new Message("TopicTest" /* Topic */,
                "TagA" /* Tag */,
                ("Hello RocketMQ " +
                    i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //Call send message to deliver message to one of brokers.
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
        }
        //Shut down once the producer instance is not longer in use.
        producer.shutdown();
    }
}

可靠非同步發送

通常用於對發送消息響應時間要求更高/更快的場景

public class AsyncProducer {
    public static void main(
        String[] args) throws MQClientException, InterruptedException, UnsupportedEncodingException {
        DefaultMQProducer producer = new DefaultMQProducer("Jodie_Daily_test");
        producer.start();
        producer.setRetryTimesWhenSendAsyncFailed(0);

        for (int i = 0; i < 10000000; i++) {
            try {
                final int index = i;
                Message msg = new Message("Jodie_topic_1023",
                    "TagA",
                    "OrderID188",
                    "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
                    //重點在這裡 非同步發送回調
                producer.send(msg, new SendCallback() {
                    @Override
                    public void onSuccess(SendResult sendResult) {
                        System.out.printf("%-10d OK %s %n", index, sendResult.getMsgId());
                    }

                    @Override
                    public void onException(Throwable e) {
                        System.out.printf("%-10d Exception %s %n", index, e);
                        e.printStackTrace();
                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        producer.shutdown();
    }
}

單向發送

適用於某些耗時非常短,但對可靠性要求並不高的場景,例如日誌收集。

只發送消息,不等待伺服器響應,只發送請求不等待應答。此方式發送消息的過程耗時非常短,一般在微秒級別。

public class OnewayProducer {
    public static void main(String[] args) throws Exception{
        DefaultMQProducer producer = new DefaultMQProducer("Test");
        producer.start();
        for (int i = 0; i < 100; i++) {
            //Create a message instance, specifying topic, tag and message body.
            Message msg = new Message("TopicTest" /* Topic */,
                "TagA" /* Tag */,
                ("Hello RocketMQ " +
                    i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //Call send message to deliver message to one of brokers.
            producer.sendOneway(msg);

        }
        //Shut down once the producer instance is not longer in use.
        producer.shutdown();
    }
}

笑笑笑技術圈


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近開發小程式,為瞭解耦數據 寫了一個wenaox的庫,一開始放在libs里使用相對路徑引入,覺得很辛苦, 後面發現小程式的npm已經進入beta版本,於是下載了beta開發工具,構建後就可以直接import引入 很爽 有需要可以下載用一下 [Wenaox][wenaox url] [![NPM v ...
  • Javascript是一種基於對象的語言,你遇到的所有東西幾乎都是對象。但是,它又不是一種真正的面向對象編程(OOP)語言,因為它的語法中沒有Class。(不過,ES6引入了Class這個概念,作為對象的模板。通過class關鍵字,可以定義類。ES6入門:http://es6.ruanyifeng. ...
  • 1、代碼: <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>JS過渡和變形效果演示</title> <style type="text/css"> *{ margin: 0; padding: 0; } .container{ wi ...
  • 1:children及find方法都用是用來獲得element的子elements的,兩者都不會返回 text node,就像大多數的jQuery方法一樣。 2:children方法獲得的僅僅是元素一下級的子元素,即:immediate children。 3:find方法獲得所有下級元素,即:de ...
  • CSS 的偽類選擇器和偽元素選擇器,讓 CSS 有了更為強大的功能。 偽類大家聽的多了,偽元素可能聽到的不是那麼頻繁,其實 CSS 對這兩個是有區分的。 有個錯誤有必要每次講到偽類都提一下,有時你會發現偽類元素使用了兩個冒號 (::) 而不是一個冒號 (:),這是 CSS3 規範中的一部分要求,目的 ...
  • 很多時候我們需要引入框架來開發項目,這時我們可能會遇到頁面還沒載入完源碼出來了的問題,給用戶一種不好的視覺體驗,這是便需要loading載入了,來完善用戶體驗! ...
  • 工廠方法模式 概要 1. 一個抽象產品類 2. 多個具體產品類 3. 一個抽象工廠 4. 多個具體工廠 每一個具體產品對應一個具體工廠 5. 符合 "OCP開放封閉原則" 優點 1. 降低了代碼耦合度,對象的生成交給子類去完成 2. 實現了開放封閉原則 每次添加子產品 不需要修改原有代碼 缺點 1. ...
  • 前言: spring 的環繞通知和前置通知,後置通知有著很大的區別,主要有兩個重要的區別: 1) 目標方法的調用由環繞通知決定,即你可以決定是否調用目標方法,而前置和後置通知 是不能決定的,他們只是在方法的調用前後執行通知而已,即目標方法肯定是要執行的。 2) 環繞通知可以控制返回對象,即你可以返回 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...