在上一章消费者消费流程中,有一个非常重要的概念,就是重平衡,只有在经过重平衡后,消息的拉取对象PullMessageService才可以去Broker拉取消息,那么RocketMQ为什么要这样设计呢?
什么是重平衡
重平衡分析的前提是:集群消费模式
Rebalance(重平衡)机制指的是:将一个Topic下的多个队列,在同一个消费者组(consumer group)下的多个消费者实例(consumer instance)之间进行重新分配。
Rebalance机制的本意是为了提升消息的并行消费能力。例如,⼀个Topic下5个队列,在只有1个消费者的情况下,这个消费者将负责消费这5个队列的消息。如果此时我们增加⼀个消费者,那么就可以给其中⼀个消费者分配2个队列,给另⼀个分配3个队列,从而提升消息的并行消费能力。
这就是为什么重平衡为什么前提条件是要在集群消费模式下的原因
下图为4个消费队列,4个消费者,对应起来的就是一个ConsumerQueue对应一个消费者达到了均衡的作用