3.1.3 重新初始化消费者


3.1.3 重新初始化消费者

消费者连接器的consume()方法在注册消费者至UZK后,调用reinitializeConsumer()方法执行重新初始化。消费者启动时希望被加入消费组,必须执行一次初始化方法,并触发消费组内所有消费者成员(当然也包括自己)的再平衡。

如图3-12所示,触发消费者连接器执行再平衡操作有两种方式:外部事件和直接触发。直接触发
会在消费者启动时执行,即重新初始化消费者时,直接调用syncedRebalance()方法强制触发一次再平衡。外部事件会通过下面3种监昕器和线程检查的方式触发再平衡。

  • ZKSessionExpirelistener。当新的会话建立或者会话超时需要重新注册消费者,并调用
    syncedRebalance()触发再平衡。
  • ZKTopicPartitionChangelistener。当主题的分区数量变化时,通过rebalanceEventTriggered
    触发再平衡。
  • ZKRebalancerListener。当消费组成员变化时,通过rebalanceEventTriggeredffl!h发再平衡。

在这里插入图片描述
每个消费者在启动时都要订阅3种事件:会话超时事件、消费组的子节点变化事件(消费者增减)、主题的数据变化事件(分区增减)。这3种事件任何一个发生,都会触发再平衡操作。如果从消费组级别来看,其他消费者也会订阅这些事件,也都会发生再平衡。即消费组中的所有消费者都会发生再平衡。再平衡操作的具体实现在ZKRebalanceListener类中。

相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页