消费端选择消费队列的规则在RocketMQ-负载均衡中已经解释清楚,在broker主从部署结构上,物理消息会被同步到多个slave节点上,因此消费端如何从master节点和多个slave节点中选出一个broker节点进行消费需要一个策略。
假设broker有一个master节点与两个slave节点,拉取步骤如下:
(1)consumer第一次默认从master节点拉取消息
(2)master将消息返回,并计算未消费的数据量占物理内存的比例,当超过40%时,会返回建议的拉取节点id(suggested brokerId),如果未超过,suggested brokerId仍然是master节点
(3)consumer获取返回结果后,将建议的拉取节点保存在本地
(4)consumer第二次拉取消息时,会从上次返回的建议节点中获取消息