RocketMQ利用redis來實現消息冪等


1、為什么要做消息冪等:消息會有重復

今天正式服務器上2台服務器收到同一個消息,因為是集群模式不可能兩台服務器都收到同一個消息,后來排查發現是由於網絡各種原因確認消息沒及時到達到rocketmq,所以會重發。

  1. 當系統的調用鏈路比較長的時候,比如系統A調用系統B,系統B再把消息發送到RocketMQ中,在系統A調用系統B的時候,如果系統B處理成功,但是遲遲沒有將調用成功的結果返回給系統A的時候,系統A就會嘗試重新發起請求給系統B,造成系統B重復處理,發起多條消息給RocketMQ造成重復消費
  2. 在系統B發送消息給RocketMQ的時候,也有可能會發生和上面一樣的問題,消息發送超時,結果系統B重試,導致RocketMQ接收到了重復的消息
  3. 當RocketMQ成功接收到消息,並將消息交給消費者處理,如果消費者消費完成后還沒來得及提交offset給RocketMQ,自己宕機或者重啟了,那么RocketMQ沒有接收到offset,就會認為消費失敗了,會重發消息給消費者再次消費

消息重復消費場景

https://blog.csdn.net/LO_YUN/article/details/104135197

1、RocketMQ利用redis來實現消息冪等:


免責聲明!

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



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