消息队列RocketMQ版如果消息业务消费时间太久,那过多久会重新投递该消息?
消费端到 mq 当中拉到消息进行消费之后,会反馈给 mq 已经成功拿到消息并 且消费。如果 mq 没有接收到消费端的反馈,那么 mq 就会认为这个消息没有消费成 功,那么这个消息在 topic 当中就会再次可见,那么消费者就可以再次来拉取这个消 息(重试)。 第一次发消息算是第 0 次,如果在 10 秒内没有给 mq 反馈,那么这个消息就会 再次可见,消费端就会再去拉取这个消息,就是第一次重试了,如果在 10 秒之后, 消费者给了第一次发消息(第 0 次)的响应,那么这个消费也是失败的。比如消费者 现在拉取到的是 10s 之后第一次重试的,那么在之后的 30 秒之内,如果消费者给了 mq 第一次重试拉到的消息的响应,这个才算是消费成功的。 所以建议不要把业务逻辑放在返回给 mq 消息的代码之前,最好是保证 10 秒之 内要给到 mq 响应。可以将业务逻辑放在其他地方做并发处理。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/