RocketMQ最佳实战
RocketMQ 客戶端最佳實踐
1. Producer最佳實踐
? ? 發送消息注意事項
? ? 1). 一個應用盡可能用一個Topic,消息子類型用tags來標識,tags可以由應用自由設置。
? ? 2). 消息發送成功或者失敗,要打印消息日志,務必要打印sendresult和key字段。
? ? ? ? ?SEND_OK,消息發送成功。?
? ? ?3). 對于消息不可丟失應用,務必要有消息重發機制,例如如果消息發送失敗,存儲到數據庫,能有定時程序嘗試重發,或者人工觸發重發。
2. 消息發送失敗如何處理:
? ? 1).重試
? ? 2).如果調用send同步方法發送失敗,則嘗試將消息存儲到db,由后臺線程定時重試,保證消息一定到達Broker。
3.Consumer 最佳實踐
? ? 1). 消費過程要做到冪等
? ? ? ? ?RocketMQ目前無法避免消息重復,所以如果業務對消費重復非常敏感,務必要在業務層面去重,有以下幾種去重方式:
? ? ? ? ?a).將消息的唯一鍵,可以是msgId,也可以是消息內容中的唯一標識字段,例如訂單Id等,消費之前判斷是否在Db或Tair(全局KV存儲)中存在,如果不存在則插入,并消費,否則跳過。?
? ? ? ? ?b). 用業務層面的狀態機去重。
? ? 2). 提高消費并行度
? ? ? ? ?a). 同一個ConsumerGroup下,通過增加Consumer實例數量來提高并行度,超過訂閱隊列數的Consumer實例無效。可以通過加機器,或者在已有機器啟動多個進程的方式。
? ? ? ? ?b). 提高單個Consumer的消費并行線程,通過修改以下參數: consumeThreadMin consumeThreadMax?
? ? 3). 消息批量消費
? ? 4). 跳過非重要消息
? ? 5). 優化每條消息消費過程
?
轉載于:https://www.cnblogs.com/Jtianlin/p/8653034.html
總結
以上是生活随笔為你收集整理的RocketMQ最佳实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实践练习二
- 下一篇: Nginx负载均衡监控节点状态