RabbitMQ 如何防止重复消费

RabbitMQ的消息消费是有确认机制的,正常情况下,消费者在消息消费成功后,会发送一个确认消息,消息队列接收到之后,就会将该消息从消息队列中删除,下次也就不会再投递了。

但是如果存在网络延迟的问题,导致确认消息没有发送到消息队列,导致消息重投了,是有可能,所以当我们使用MQ的时候,消费者端自己也需要做好幂等控制来防止消息被重复消费。

一般来说,处理这种幂等问题就是我们提过无数次的 一锁,二判,三更新

也就是说我们在发送消息是需要生成一个唯一的标准并且把它放到消息体中,根据这个标识就可以判断两次消息是不是同一条了。这样我们在消费者端,接收到消息以后,只需要解析出消息体中的这个唯一标识,就可以通过 一锁 二判 三更新的方式来判断是否消费成功过了。

相关推荐
小橘快跑2 小时前
动态控制rabbitmq中的消费者监听的启动和停止
分布式·rabbitmq
在未来等你3 小时前
Elasticsearch面试精讲 Day 15:索引别名与零停机更新
大数据·分布式·elasticsearch·搜索引擎·面试
无名客03 小时前
redis分布式锁为什么采用Lua脚本实现。而不是事务
redis·分布式·lua·事务
在未来等你4 小时前
Elasticsearch面试精讲 Day 12:数据建模与字段类型选择
大数据·分布式·elasticsearch·搜索引擎·面试
xiaogg36784 小时前
springboot rabbitmq 延时队列消息确认收货订单已完成
spring boot·rabbitmq·java-rabbitmq
a587695 小时前
消息队列(MQ)初级入门:详解RabbitMQ与Kafka
java·分布式·microsoft·面试·kafka·rabbitmq
Hello.Reader6 小时前
Kafka在多环境中安全管理敏感
分布式·安全·kafka
Kevinyu_8 小时前
RabbitMQ
java·rabbitmq·java-rabbitmq
在未来等你8 小时前
Elasticsearch面试精讲 Day 14:数据写入与刷新机制
大数据·分布式·elasticsearch·搜索引擎·面试
在未来等你9 小时前
Elasticsearch面试精讲 Day 11:索引模板与动态映射
大数据·分布式·elasticsearch·搜索引擎·面试