RabbitMq消息幂等性问题

产生原因

当消费者消费消息出现异常或者是延迟消费,会造成RabbitMq进行重试发送消息(补偿),在重试过程中,可能会造成重复消费。

 

解决办法

使用一个唯一的id来判断是否已经消费过,例如订单号码等。

 

例如生产者订单服务新增了一条订单,通过RabbitMq发送一条包含了订单id的消息给消费者库存服务。

库存服务接收到消息后,从消息中取出订单id,接着在日志或者redis中查询该订单id是否已经消费成功过。

若消费成功过,则直接return。

若还没消费过,则进行消费逻辑,并将订单id存在日志或redis中,表示已经消费了。


版权声明:本文为daziyuanazhen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。