ROCKETMQ

消息队列(三)如何保证消息不被重复消费?

一、为什么会出现重复消费的问题?RabbitMQ、RocketMQ、Kafka都有可能出现重复消费的问题,导致重复消费的原因可能出现在生产者,也可能出现在MQ或消费者。这里说的重复消费问题是指同一个数据被执行了两次,不单单指MQ中一条消息被消费了两次,也可能是MQ中存在两条一模一样的消费。生产者:生产者可能会重复推送一条数据到MQ中,为什么会出现这种情况呢?也许是一个Controller接口被重复

一、为什么会出现重复消费的问题?

RabbitMQ、RocketMQ、Kafka 都有可能出现重复消费的问题,导致重复消费的原因可能出现在生产者,也可能出现在 MQ 或 消费者。这里说的重复消费问题是指同一个数据被执行了两次,不单单指 MQ 中一条消息被消费了两次,也可能是 MQ 中存在两条一模一样的消费。

  • 生产者:生产者可能会重复推送一条数据到 MQ 中,为什么会出现这种情况呢?也许是一个 Controller 接口被重复调用了 2 次,没有做接口幂等性导致的;也可能是推送消息到 MQ 时响应比较慢,生产者的重试机制导致再次推送了一次消息。

  • MQ:在消费者消费完一条数据响应 ack 信号消费成功时

原创不易,完成人机校验,阅读全文

相关推荐