rabbitmq消息重復


場景

  • 可靠性投遞機制:mq收到生產者消息,mq在返回confirm的時候網絡出現閃斷,導致broker未收到應答,導致發送兩次。
  • MQ Broker服務與消費端傳輸消息的過程中出現網絡抖動。
  • 消費端故障、異常。

解決方案

可靠性投遞解決

對每條消息,MQ系統內部必須生成一個inner-msg-id,作為去重和冪等的依據,這個內部消息ID的特性是:
(1)全局唯一
(2)MQ生成,具備業務無關性,對消息發送方和消息接收方屏蔽
有了這個inner-msg-id,就能保證上半場重發,也只有1條消息落到MQ-server的DB中,實現上半場冪等。

消費抖動解決

業務消息體中,必須有一個biz-id,作為去重和冪等的依據,這個業務ID的特性是:
(1)對於同一個業務場景,全局唯一
(2)由業務消息發送方生成,業務相關,對MQ透明
(3)由業務消息消費方負責判重,以保證冪等


免責聲明!

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



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