該文章的目的:
1.翻譯rocketMq 官方文檔裏的關鍵部分。
2.記錄官方文檔學習過程中遇到的問題
一、快速入門:http://rocketmq.apache.org/docs/quick-start/
mac 系統:官方文檔的操作步驟如下:
$ unzip rocketmq-all-4.7.0-source-release.zip
$ cd rocketmq-all-4.7.0/
$ mvn -Prelease-all -DskipTests clean install -U
$ cd distribution/target/rocketmq-4.7.0/rocketmq-4.7.0
$ nohup sh bin/mqnamesrv &
$ nohup sh bin/mqbroker -n localhost:9876 &
$ export NAMESRV_ADDR=localhost:9876
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
遇到問題:
producer發送消息失敗
原因可以參考該博客:https://segmentfault.com/q/1010000016390309
解決辦法:指定brocker的IP地址後重新啓動
# 關閉brocker
$ sh bin/mqshutdown broker
$ echo 'brokerIP1 = 127.0.0.1' >> conf/broker.conf
$ nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf &
此時producer發送消息成功
todo疑問:
1.brocker 爲什麼必須和nameserver地址保持一致?如果不保持一致,我們需要配置什麼纔可以訪問通
2.nameserver 也沒有指定配置爲什麼就是默認的localhost,brocker就是其他的IP
二、簡單發送消息:http://rocketmq.apache.org/docs/simple-example/
展示了三種發送消息方式:
同步:可靠的同步傳輸有廣泛的應用場景,例如:重要的消息通知,SMS通知,SMS營銷系統等
異步:異步傳輸通常用在響應時間敏感的業務場景
單向:單向傳輸用在對可靠性要求不高的場景,比如:日誌收集
三、有序消息:http://rocketmq.apache.org/docs/order-example/
RocketMq採用有序性規則是先進先出;
示例演示了全局和分區順序消息的發送/接收。
問題:
我運行代碼有問題,consumer 和producer 分別需要設置nameaddr
DefaultMQProducer producer = new DefaultMQProducer("example_group_name");
// 新增
producer.setNamesrvAddr("localhost:9876");
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("example_group_name");
// 新增
consumer.setNamesrvAddr("localhost:9876");
然後運行成功
四、廣播消息:http://rocketmq.apache.org/docs/broadcast-example/
廣播消息是給一個topic的所有訂閱者發送消息,如果你想讓一個topic的所有訂閱者都收到消息,那麼廣播是一個不錯的選擇
問題:
1.本機單點暫時還沒有測試,需要考慮一下如何配置多個consumer;
2.爲什麼是在消費者接收時設置模式,那如果一個消費者設置廣播模式,另外一個非廣播模式呢?
五、定時消息: http://rocketmq.apache.org/docs/schedule-example/
定時消息和普通消息的區別是:他們等到指定時間之後纔會發送。
問題:
1.運行代碼同樣需要參考三,設置addr;
2.我運行的代碼沒有達到效果,delayLevel=3是什麼意思?
六、批量發送:http://rocketmq.apache.org/docs/batch-example/
爲什麼批量?
批量發送消息可以改善短小消息的投遞性能。
使用限制:
同一批投遞的消息應該擁有:相同的topic,相同的等待確認,不支持定時消息;
此外,一個批次的消息大小不應該超過1MB
如何使用批量:
如果你同一時刻發送的消息大小不超過1MB,可以簡單的使用batch,參考代碼
當你發送大消息或者你不確認是否超過大小限制時,複雜度纔會增加 。這個時候你最好將消息拆分一下,參考代碼如下:
很不幸,官方文檔剩下內容看完了,但是並沒有得到更多的信息,發現https://github.com/apache/rocketmq/wiki/RIP-1-MQTT-Bridge 這個內容或許更詳細,後續文檔系列翻譯wiki裏的內容