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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM