开发者社区 > 云原生 > 云消息队列 > 正文

咨询下,rocketmq 重置消费位点过程中,有可能导致重复消费吗?

咨询下,rocketmq 重置消费位点过程中,有可能导致重复消费吗?

展开
收起
滴滴滴~ 2023-03-06 16:43:08 1076 0
5 条回答
写回答
取消 提交回答
  • 坚持这件事孤独又漫长。
    • 在 RocketMQ 中,如果消费者使用的是拉消息模式,重置消费位点的过程中是有可能导致重复消费的。消费者在拉取消息时,会从服务器中指定的消息消费位点开始拉取消息,然后逐个消费这些消息。如果在消费某条消息时出现异常,消费者有可能把当前消费的消息消费掉后,才抛出异常。此时,RocketMQ 会认为该条消息已经消费成功,将消费进度推进到下一条消息上。如果此时消费者重置了消费位点,会重新开始消费之前已经消费成功的消息,从而导致消息重复消费的情况。

    • 为了避免重复消费,建议使用推送消息模式,或者在拉取消息时使用消费消息的确认机制(ACK),确保消息已经被消费成功后再进行推进消费位点,以避免因为消费异常而导致的消息重复消费。同时,在重置消费位点时,也可以通过使用幂等消费的方式,保证消息消费的幂等性,从而避免消息重复消费的出现。

    2023-03-07 10:32:34
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,MQ重复消费是指同一个应用的多个实例收到相同的消息,或者同一个实例收到多次相同的消息,若消费者逻辑未做幂等处理,就会造成重复消费。

    2023-03-07 10:32:24
    赞同 1 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    MQ会把你的这批消费放到当前消费组的重试队列中,然后过一段时间重试队列中的消息会再次发送给消费者

    2023-03-07 08:54:51
    赞同 展开评论 打赏
  • 重置消费位点后消费者将直接从重置后的位点开始消费,重置后的历史消息需要重新读写,造成重复消费

    2023-03-06 17:32:35
    赞同 展开评论 打赏
  • 向前重置位点的话,这段时间的消息就会被重复消费。此答案整理自钉群“群2-Apache RocketMQ 中国”

    2023-03-06 16:49:06
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    行业实践:RocketMQ 业务集成典型行业应用和实践 立即下载
    技术揭秘:RocketMQ 5.0 云原生架构升级之路 立即下载
    RocketMQ Summit 2022 开源生态发展 立即下载