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