RocketMQ快速入門

小說:春季草花有哪幾種?作者:董侯更新時間:2019-05-27字數:30854

葉揚的確有一件事想要讓這些人支持他,那就是對付秋遠山的爺爺。他的爺爺是國家的副總理,要想對付他,單憑自己現在的力量根本不可能,這些常委倒是給了葉揚一個好的方法。

矮化南天竹是真的嗎?

唐欣和夏雨有些詫異的望著穆雪冰和這位婦女,他們有些弄不清楚這名婦女和穆雪冰是什么關系。
“哎呀,哎呀,本來想讓你死在無知之中,一切都不知道的就死了,不會有恐懼和痛苦,沒想到你居然有人救了啊?!北ǖ臐鉄熤幸粋€穿著打扮十分的時髦,手里總是帶著一把雨傘的女人用一種夸張的笑聲說道。

此刻,座上那治世之尊如來將金婆羅花放下,問道:“金蟬子,你往哪里去?”

RocketMQ快速入門


前面幾篇文章介紹了為什么選擇RocketMQ,以及與kafka的一些對比: 阿里 RocketMQ 優勢對比,方便大家對于RocketMQ有一個簡單的整體了解,之后介紹了:MQ 應用場景,讓我們知道MQ在什么時候可以使用,可以解決什么問題,之后介紹了:RocketMQ集群部署配置;本篇文章接著上篇內容之后,來給大家介紹下RocketMQ快速入門。

如何使用

1、引入 rocketmq-client

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.1.0-incubating</version>
</dependency>

2、編寫Producer

 DefaultMQProducer producer = new DefaultMQProducer("producer_demo");
       //指定NameServer地址
        producer.setNamesrvAddr("192.168.116.115:9876;192.168.116.116:9876"); //修改為自己的

        /**
         * Producer對象在使用之前必須要調用start初始化,初始化一次即可
         * 注意:切記不可以在每次發送消息時,都調用start方法
         */
        producer.start();

        for (int i = 0; i < 997892; i++) {
            try {
                //構建消息
                Message msg = new Message("TopicTest" /* Topic */,
                    "TagA" /* Tag */,
                    ("測試RocketMQ" + i).getBytes(RemotingHelper.DEFAULT_CHARSET)
                );

                //發送同步消息
                SendResult sendResult = producer.send(msg);

                System.out.printf("%s%n", sendResult);
            } catch (Exception e) {
                e.printStackTrace();
                Thread.sleep(1000);
            }
        }


producer.shutdown();

3、編寫Consumer

/**
 * Consumer Group,非常重要的概念,后續會慢慢補充
 */
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer_demo");
//指定NameServer地址,多個地址以 ; 隔開
consumer.setNamesrvAddr("192.168.116.115:9876;192.168.116.116:9876"); //修改為自己的

/**
 * 設置Consumer第一次啟動是從隊列頭部開始消費還是隊列尾部開始消費
 * 如果非第一次啟動,那么按照上次消費的位置繼續消費
 */
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);

consumer.subscribe("TopicTest", "*");

consumer.registerMessageListener(new MessageListenerConcurrently() {

    @Override
    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
    ConsumeConcurrentlyContext context) {
    try {
        for(MessageExt msg:msgs){
        String msgbody = new String(msg.getBody(), "utf-8");
        System.out.println("  MessageBody: "+ msgbody);//輸出消息內容
        }
    } catch (Exception e) {
        e.printStackTrace();
        return ConsumeConcurrentlyStatus.RECONSUME_LATER; //稍后再試
    }
    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; //消費成功
    }
});


consumer.start();

System.out.printf("Consumer Started.%n");

4、說明

各位根據自己的環境,修改NamesrvAddr的值,我的集群請參考:RocketMQ集群部署配置。稍后通過RocketMQ管控臺就可以看到之前搭建的多Master多Slave模式,異步復制集群模式。

5、通過RocketMQ管控臺

rocketmq-console-ng獲取方式為:rocketmq-console-ng,之后通過mavne進行編譯獲取jar,命令如下:

mvn clean package -Dmaven.test.skip=true
java -jar target/rocketmq-console-ng-1.0.0.jar

得到rocketmq-console-ng-1.0.0.jar之后,找到rocketmq-console-ng-1.0.0.jarBOOT-INFclassesapplication.properties文件,根據自己的NamesrvAddr進行修改rocketmq.config.namesrvAddr的值。

直接啟動:

java -jar rocketmq-console-ng-1.0.0.jar

管控臺
管控臺是基于springboot的,的確springboot非常方便和非?;鹆?,所以有必要去學習下springboot了(其實還是spring系列,所以spring也必要深入學習下),稍后通過管控臺進行觀察運行。

6、運行觀察

一個好的習慣是先運行Consumer,之后在運行Producer,之后通過rocketmq-console-ng管控臺觀察

運行中截圖

運行完成之后,的確broker-a的數據加上broker-b的數據量就等于我們發送的數據量,而且slave的數量也master的數量也是一致的,效果如下:

運行完成

查看發送這些數據,2臺機器的磁盤情況如下:
rocketmq1占用磁盤空間

rocketmq2占用磁盤空間

到目前位置,關于RocketMQ快速入門就結束了,未完待續……

如果讀完覺得有收獲的話,歡迎點贊加關注。


個人公眾號,歡迎關注,查閱更多精彩歷史?。?!
匠心零度公眾號

當前文章:http://www.hfcxdn.com/ask/question_52021.html

發布時間:2019-05-27 02:09:48

柴藤是紫藤嗎 黃金槐在園林綠化中它有哪些優勢,為什么綠化的需求量會那么多? 6公分垂柳價格 四川可以種植碧桃嗎? 紅瑞木種子幾月播種最好? 高羊茅早熟禾如何混播? 百慕大草坪在什么溫度下播種發芽率最高? 林下牧草品種有哪些?

柳樹耐寒嗎? 冷地早熟禾你不知道的特點有這些 皇竹草能喂豬嗎? 八角金盤種子哪里有賣的? 元月適合種什么花卉種子? 河北哪里有賣桔梗種子的? 黑龍江適合種植山楂嗎? 夏天可以播種紅楓嗎? 黃柏種植密度每畝用種多少斤?

編輯:陵順扁

我要說兩句: (0人參與)

發布
捕鱼达人之深海狩猎