消息队列(三)如何保证消息不被重复消费?
一、为什么会出现重复消费的问题?RabbitMQ、RocketMQ、Kafka都有可能出现重复消费的问题,导致重复消费的原因可能出现在生产者,也可能出现在MQ或消费者。这里说的重复消费问题是指同一个数据被执行了两次,不单单指MQ中一条消息被消费了两次,也可能是MQ中存在两条一模一样的消费。生产者:生产者可能会重复推送一条数据到MQ中,为什么会出现这种情况呢?也许是一个Controller接口被重复
一、为什么会出现重复消费的问题?
RabbitMQ、RocketMQ、Kafka 都有可能出现重复消费的问题,导致重复消费的原因可能出现在生产者,也可能出现在 MQ 或 消费者。这里说的重复消费问题是指同一个数据被执行了两次,不单单指 MQ 中一条消息被消费了两次,也可能是 MQ 中存在两条一模一样的消费。
生产者:生产者可能会重复推送一条数据到 MQ 中,为什么会出现这种情况呢?也许是一个 Controller 接口被重复调用了 2 次,没有做接口幂等性导致的;也可能是推送消息到 MQ 时响应比较慢,生产者的重试机制导致再次推送了一次消息。
MQ:在消费者消费完一条数据响应 ack 信号消费成功时
原创不易,完成人机校验,阅读全文
相关推荐
ROCKETMQ消息队列(二)如何保证消息队列的高可用?ROCKETMQ消息队列(五)如何保证消息的顺序性?ROCKETMQ消息队列(一)为什么要使用消息队列?ROCKETMQ消息队列(四)如何处理消息丢失的问题?RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲10 高级篇三 幂等性保障不重复消费RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲15 高级篇八 消费端ACK与重回队列RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲16 高级篇九 TTL(设置队列或消息有效期)队列及消息RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲13 高级篇六 消费端自定义监听