参见https://www.cnblogs.com/jack1995/p/10908805.html
幂等性
幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。
在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.更复杂的操作幂等保证是利用唯一交易号(流水号)实现.
简单说就是一个请求或者方法调用多次,需要保证数据的准确性
出现重复数据的场景
比如rabbitMQ在消费者消费完数据的时候突然宕机了,确认消费消息的信息没有发送给消息队列服务,消费者再次重启消费时有可能会重复消费消息
解决方案
保证消息的幂等性问题,需要结合具体的业务场景,下面是一些解决思路
- 在内存中、redis、数据库中建立一个list消费记录,每次消费消息前先扫描一下这个list
- 利用redis的set集合具有不可重复的特性
- 利用数据库唯一主键