如何防止隊列重復消費?


  在網絡延遲等不可控的因素下,消息被重復發送的問題不可避免,但是我們應該保證我們的消息不被重復消費。

如何解決

  在消費的業務邏輯里加入保證MQ重復消費的冪等性的操作。

什么是冪等性

  其任意多次執行多產生的影響均與一次執行的影響相同。  

如何保證冪等性

  從業務的實際操作划分解決方案

  1. 僅使用消息進行數據庫插入操作:給消息加一個唯一主鍵,重復消費時會主鍵沖突。
  2. 僅使用消息做redis的set操作:無需處理,set本身冪等。
  3. 其他情況:利用第三方介質記錄消費日志,給消息分配一個全局id,只要消費過該消息,則將k-v寫入介質中,消費前先檢查,如果已經消費過則不再消費。

以上總結參考:https://mp.weixin.qq.com/s/sUQmVDw-XDxrFYpIyWbYGw、https://mp.weixin.qq.com/s/RW8dwgCODAqrjdFElMo45w、https://mp.weixin.qq.com/s/Ur9173kJ6DbrsD8DRwJE4w、https://mp.weixin.qq.com/s/sB5HjHr0neS07zvkz3OSjg


免責聲明!

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



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