重复消费
诱因
消息队列拥有重试机制,下游业务因(服务器网络抖动,开发人员代码BUG,数据问题)等原因发生异常后,程序会抛出异常并要求重新发送请求。
解决方法
幂等(idempotent、idempotence):
在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
-
强检验:用于金钱相关的操作,将金钱与流水接口一起事物,通过流水确定唯一性,方便对账与排查问题
-
弱检验:使用token / 将场景数据存于Redis
顺序消费
情景
一般都是同个业务场景下不同几个操作的消息同时过去,本身顺序是对的,但是你发出去的时候同时发出去了,消费的时候却乱掉了(多线程同时消费)