RabbitMQ 如何防止重复消费

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

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

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

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

相关推荐
Database_Cool_11 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
肥胖小羊21 小时前
解决企业微信 AccessToken 刷新并发冲突的分布式锁机制实践
分布式·企业微信
过期动态1 天前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
风中凌乱2 天前
kafka新版本集群的安装与部署
分布式·kafka
SLD_Allen2 天前
大规模分布式AI训练基础设施
人工智能·分布式·模型训练
富士康质检员张全蛋2 天前
Kafka的操作-消费的详情
分布式·kafka
昕光xg2 天前
Istio笔记04-基于Jaeger的分布式链路追踪
笔记·分布式·istio
Benjamin℡2 天前
Zookeeper(一)搭建单体和集群服务以及Zookeeper客户端
分布式·zookeeper·云原生
wWYy.3 天前
分布式:数据复制
分布式
正儿八经的少年3 天前
分布式 ID
分布式