java - 卡夫卡消费者: can onPartitionsRevoked and onPartitionsAssigned callbacks be executed inside one poll() call?

标签 java apache-kafka kafka-consumer-api

我正在使用kafka消费者api 0.10.2.1。

KafkaConsumer提供分区分配和撤销的回调:

consumer.subscribe(topics, consumerRebalanceListener);

其中consumerRebalanceListener有两个方法:

public void onPartitionsRevoked(Collection<TopicPartition> partitions);
public void onPartitionsAssigned(Collection<TopicPartition> partitions);

由于 Kafka Consumer 中的所有操作都发生在单线程中,并且在 poll() 方法内部,因此这些回调是从 poll() 方法内部调用的。 问题是,它们是否可以通过一个 poll() 调用来调用,还是始终需要两个单独的 poll() 调用?

最佳答案

在我看来,它们是从 poll() 调用中调用的。当消费者实例开始加入群组时,首先调用onPartitionsRevoked撤销分配给该实例的所有分区,并发送JoinGroup请求。然后它无限期地阻塞,直到收到响应。如果加入组成功,则会通过调用onPartitionsAssigned执行用户的回调。所有这些都在一轮民意调查中完成。

关于java - 卡夫卡消费者: can onPartitionsRevoked and onPartitionsAssigned callbacks be executed inside one poll() call?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46808621/

相关文章:

java - 了解关于引用队列的虚引用与弱引用

java - 操纵二的大幂的有效方法

java - 当用户点击后退按钮时,如何重建客户端修改的页面?

elasticsearch - Kafka Connect Elasticsearch sink 没有文档被索引

apache-kafka - Kafka消费者订阅多个主题时接收消息的顺序

java - 在 kafka.apache.org 上运行示例时,Kafka 消费者未收到消息

java - 将上下文传递给计时器 android eclipse

apache-kafka - Kafka - 无法建立到节点 -1 的连接

apache-kafka - 使用复制不足的分区修复 kafka 集群

apache-kafka - 如何为kafka主题选择分区数?