咨询下,rocketmq 重置消费位点过程中,有可能导致重复消费吗?
在 RocketMQ 中,如果消费者使用的是拉消息模式,重置消费位点的过程中是有可能导致重复消费的。消费者在拉取消息时,会从服务器中指定的消息消费位点开始拉取消息,然后逐个消费这些消息。如果在消费某条消息时出现异常,消费者有可能把当前消费的消息消费掉后,才抛出异常。此时,RocketMQ 会认为该条消息已经消费成功,将消费进度推进到下一条消息上。如果此时消费者重置了消费位点,会重新开始消费之前已经消费成功的消息,从而导致消息重复消费的情况。
为了避免重复消费,建议使用推送消息模式,或者在拉取消息时使用消费消息的确认机制(ACK),确保消息已经被消费成功后再进行推进消费位点,以避免因为消费异常而导致的消息重复消费。同时,在重置消费位点时,也可以通过使用幂等消费的方式,保证消息消费的幂等性,从而避免消息重复消费的出现。
楼主你好,MQ重复消费是指同一个应用的多个实例收到相同的消息,或者同一个实例收到多次相同的消息,若消费者逻辑未做幂等处理,就会造成重复消费。
MQ会把你的这批消费放到当前消费组的重试队列中,然后过一段时间重试队列中的消息会再次发送给消费者
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/