RabbitMQ 如何避免消息的重復消費


1、在海量訂單產生的業務高峰期,如何避免消息的重復消費問題?

消費端實現冪等性: 即消費端永遠不會消費多次,即使收到了多條一樣的消息。

 

2、業界主流冪等性操作

唯一ID + 指紋碼機制,利用數據主鍵去重

利用Redis的原子性去實現

1)  唯一ID + 指紋碼機制

  唯一ID + 指紋碼機制,利用數據主鍵去重

  SELECT COUNT(1) FROM T_ORDER WHERE ID = 唯一ID + 指紋碼

好處: 實現簡單

壞處: 高並發下有數據庫寫入的性能瓶頸

解決方案: 跟進ID進行分庫分表進行算法路由

 

2)  利用Redis的原子性去實現

Redis要考慮的問題

  第一:我們是否要進行數據落庫,如果落庫的話,關鍵解決的問題是數據庫和緩存如何做到原子性?

       第二: 如果不進行落庫,那么都存儲到緩存中,如何設置定時同步的策略(緩存持久化)?

 


免責聲明!

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



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