从Spring Kafka中的ConsumerRebalanceListener访问使用者

时间:2017-04-28 20:06:05

标签: spring-kafka

我需要使用ConsumerRebalanceListener并发现可以通过containerProperties.setConsumerRebalanceListener方法注册它。我需要平衡器监听器中的消费者实例来获取分区的位置(consumer.position())以及覆盖消费者(consumer.seek())的fetch偏移量,但我找不到如何访问消费者实例的方法。

被修改

提出了GH问题,这里是链接https://github.com/spring-projects/spring-kafka/issues/304

1 个答案:

答案 0 :(得分:1)

为此,您必须使用目标侦听器的ConsumerSeekAware实现:

  

第一个是在容器启动时调用的;在初始化后的某个任意时间寻找时,应该使用此回调。您应该保存对回调的引用;如果您在多个容器(或ConcurrentMessageListenerContainer)中使用相同的侦听器,则应将回调存储在ThreadLocal或由侦听器Thread键入的其他一些结构中。

     

使用组管理时,在分配更改时调用第二种方法。例如,您可以通过调用回调来使用此方法来设置分区的初始偏移量;你必须使用回调参数,而不是传递给registerSeekCallback的参数。如果您自己显式分配分区,则永远不会调用此方法;在这种情况下使用TopicPartitionInitialOffset。