RabbitMQ如何保证数据不重复消费


参见https://www.cnblogs.com/jack1995/p/10908805.html

幂等性

幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。
在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.更复杂的操作幂等保证是利用唯一交易号(流水号)实现.

简单说就是一个请求或者方法调用多次,需要保证数据的准确性

出现重复数据的场景

比如rabbitMQ在消费者消费完数据的时候突然宕机了,确认消费消息的信息没有发送给消息队列服务,消费者再次重启消费时有可能会重复消费消息

解决方案

保证消息的幂等性问题,需要结合具体的业务场景,下面是一些解决思路

  1. 在内存中、redis、数据库中建立一个list消费记录,每次消费消息前先扫描一下这个list
  2. 利用redis的set集合具有不可重复的特性
  3. 利用数据库唯一主键


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM