天天看點

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

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

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

2、業界主流幂等性操作

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

利用Redis的原子性去實作

1)  唯一ID + 指紋碼機制

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

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

好處: 實作簡單

壞處: 高并發下有資料庫寫入的性能瓶頸

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

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

Redis要考慮的問題

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

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

繼續閱讀