RocketMQ消費者實踐


  最近工作中用到了RocketMQ,現記錄下,如何正確實現消費~

  • 消費者需要注意的問題
  1. 防止重復消費
  2. 如何快速消費
  3. 消費失敗如何處理
  • Consumer具體實現
  • 防止重復消費

    重復消費會造成數據不一致等問題。所以,消費者要做到消費冪等

    1)每次消費,記錄messageId;如果再次消費該message,查詢messageId是否已存在,已存在,就跳過消費;

    2)使用具體業務狀態來防止重復消費,例如如果狀態已經被變更,說明已有消息被消費;

  • 如何快速消費

    消費過程緩慢,勢必會造成消息積壓,如何提高消費速度勢必比較重要:

    每次接收到消息后,不做處理(具體不一定,最好是簡單),直接將消息保存到本地數據庫,然后后台異步處理消息,這么做的好處:

    1) 快速消費,如果消費過程比較耗時(大量更新,RPC調用等),可以將消息插入本地,然后后台異步消費,消費完成,更新本地消息狀態

               2)失敗可控,如果某條消息消費失敗,不依賴於mq的重試機制,可以定時重跑消費失敗的消息,或者人工觸發重試消費。

  • 消費失敗如何處理

   消費過程不能保證不出異常,雖然mq消費失敗有重試機制,但我們並沒有這么做,而是:

    跟上面提到的一樣,由於已經把消息存到了本地,消費失敗,也不用擔心,后台重跑即可~~~~

 

  如果大家覺得上面說的哪方面有問題,或者有更好的實踐,歡迎留言~~~~


免責聲明!

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



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