Java Kafka使用者:onPartitionsRevoked和onPartitionsAssigned回调能否在一个poll()调用内执行?
我使用的是kafka消费者api 0.10.2.1 KafkanConsumer为分区分配和撤销提供回调:Java Kafka使用者:onPartitionsRevoked和onPartitionsAssigned回调能否在一个poll()调用内执行?,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,我使用的是kafka消费者api 0.10.2.1 KafkanConsumer为分区分配和撤销提供回调: consumer.subscribe(topics, consumerRebalanceListener); 其中,ConsumerBalanceListener有两种方法: public void onPartitionsRevoked(Collection<TopicPartition> partitions); public void onPartitionsAssig
consumer.subscribe(topics, consumerRebalanceListener);
其中,ConsumerBalanceListener
有两种方法:
public void onPartitionsRevoked(Collection<TopicPartition> partitions);
public void onPartitionsAssigned(Collection<TopicPartition> partitions);
partitionsrevoked上的公共void(集合分区);
已签名的分区上的公共void(集合分区);
由于Kafka consumer中的所有内容都发生在单线程和内部poll()方法中,因此这些回调是从内部poll()
方法调用的。
问题是,它们可以从一个
poll()
调用调用,还是总是需要两个独立的poll()
调用?在我看来,它们是从poll()调用的。当使用者实例开始加入组时,首先调用onPartitionsRevoked
以撤销分配给该实例的所有分区,并发送JoinGroup请求。然后它无限期地阻塞,直到收到响应为止。若它成功加入组,它将通过调用onPartitionsAssigned
来执行用户的回调。所有这些都是在一轮投票中完成的
谢谢,我想这是您以前看到的预期行为,或者您从代码中了解到的。是否在某处也有记录?