1. 程式人生 > >RocketMQ最佳實戰

RocketMQ最佳實戰

rocketmq 日誌 ons 如果 最佳實踐 目前 數據庫 過程 同步

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).優化每條消息消費過程

RocketMQ最佳實戰