發消息前的準備
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
事務發送
消費