前言
这篇笔记主要记录consumer在启动过程中,负载均衡的逻辑,多个消费者组成一个消费者组,对于集群模式,同一个消费者组中的多个消费者共同消费一个topic下的所有消息,所以每个consumer可能会处理N个messageQueue,至于哪个consumer消费哪个messageQueue,是由负载均衡策略决定的
源码
在消费者启动的时候,会通过负载均衡策略,来决定当前消费者处理哪几个messageQueue,入口是:
this.rebalanceService.start();
在run()方法中,会通过while循环,每20S,去进行一次负载均衡计算
无论是pull模式,还是push模式,都会调用到
org.apache.rocketmq.client.impl.consumer.RebalanceImpl#doRebalance
这个方法,是按照topic维度,进行负载均衡