深入浅出 RocketMQ 消息队列 笔记(12)
如何保证消息不重复 消息无法保证不重复,但可以保证消息被幂等消费,等同于仅消费一次 消息不重复解决方案 1.项目初期/新功能开始设计的时候,就考虑好幂等设计,满足消息的幂等消费 2.调整业务执行顺序,将影响大业务幂等的逻辑提前,提前终止重复消费 3.添加唯一性索引,如果有业务上的唯一索引(比如订单号)就不用加,反之就加一个唯一索引,重复消费插入时会报错的。如果不方便添加唯一索引,可以再开一张表存唯一索引,然后将这两张表放在同一个事务里 4.引入第三方中间件,比如redis,处理的时候用SETNX判断,已插入就直接返回,否则执行正常业务逻辑。不过这里有可能在redis刚存值的时候系统宕机了,导致消息被假处理,这个需要注意。
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论

