问题一:RocketMQ5的顺序消息设计是根据message group粒度分发的吗?不同message group会相互阻塞吗?push consumer模式
问题二:RocketMQ 5里的消息组(message group),因为看文档里有这么个说法,不知道RocketMQ 5里顺序消息消费时,同一个queue里不同消息组(不是consumer group),会不会相互阻塞?
是的,RocketMQ 5 中的顺序消息设计是基于 Message Group 粒度进行分发的。Message Group 是指具有相同 Group ID 的一组消息。在发送顺序消息时,可以为每个消息设置一个 Group ID,使得具有相同 Group ID 的消息被分配到同一个消息队列中。
RocketMQ 通过以下步骤实现顺序消息的分发:
消息发送阶段:在发送顺序消息时,应用程序可以为每个消息设置一个 Group ID。RocketMQ 根据 Group ID 来判断消息是否属于同一个 Message Group。若属于同一个 Group,则会保证这组消息按照发送顺序存储在同一个 Broker 上的一个队列中。
消息消费阶段:在消费顺序消息时,只能使用一个消费者实例来接收该消息队列的消息。该消费者实例将以串行方式按顺序处理消息,确保消息按发送顺序被消费。
针对问题一的回答:不同group完全不影响。顺序是按照queue粒度的, 类似kafka的partition。
针对问题二的回答:不会,不同group是不影响的。
——此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/