----發消息-同步\異步\單向\順序 完整流程

發消息前的準備

windows:

https://www.jianshu.com/p/4a275e779afa

第一次沒成功的改進

修改了環境變量後,重新啓動電腦。

Windows下rocketmq mqnamesrv.exe 啓動成功,但是mqbroker.exe啓動失敗

啓動成功的broker的樣子:

啓動不成功的樣子

解決辦法:

解決辦法,刪除C:\Users\"當前系統用戶名"\store下的所有文件,就可以了

linux

關閉運行的防火牆

systemctl stop firewalld.service

這一項不執行,會出現網絡連接不上 

MQClientException: No route info of this topic, xxxxx

關閉namesrv服務:


sh bin/mqshutdown namesrv

關閉broker服務 :


sh bin/mqshutdown broker

 

啓動每個服務器的nameserver

nohup sh bin/mqnamesrv &    
tail -f nohup.out

 

啓動broker

# nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true  &       單broker啓動

nohup sh bin/mqbroker -c /opt/rocketmq-all-4.3.0-bin-release/conf/2m-2s-sync/broker-a.properties &   集羣broker啓動

nohup sh bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties &

nohup sh bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties &
tail -f ~/logs/rocketmqlogs/broker.log

systemctl stop firewalld.service 關閉防火牆 rocketmq集羣,

雙主雙從,必須是2臺mq機器,就算是一臺沒開。但是第一臺上必須是a,b1,不能是a,a1.

這是mq集羣的關鍵!

發消息方式類別

同步:順序執行 用於發送重要的消息

異步:在回調中獲取返回的信息 用戶對速度要求高的場景

單向:不需要獲取返回的信息  對消息發送是否成功不太關注,比如計入日誌

順序:發送的時候,同一個條件的消息發送到一個隊列中,接收的時候,用同一個線程去接收一個隊列的信息.

同步

producer.setCreateTopicKey("AUTO_CREATE_TOPIC_KEY"); 

這句不加,會出現:

org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException:sendDefaultImpl call timeout
broker連接不上

延遲發送

延遲接收

異步

單向

順序

生產者

消費者

延時

併發

        List<Message> msgs = new ArrayList<Message>();
        Message msg1 = new Message("BaseTopic","Tag1",("Hello World"+1).getBytes());
                Message msg2 = new Message("BaseTopic","Tag1",("Hello World"+2).getBytes());
                Message msg3 = new Message("BaseTopic","Tag1",("Hello World"+3).getBytes());
                msgs.add(msg1);
                msgs.add(msg2);
                msgs.add(msg3);
          SendResult result = producer.send(msgs);

消費_根據sql

事務發送

 

消費

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章