KafkaConsumer#pause是否会影响当前的轮询?

问题描述

如果我设置了自己的重新平衡监听器,并且在onPartitionsAssigned调用consumer.pause(partitions),将当前调用poll,并在其中调用重新平衡监听器,并返回所有记录?

我会在文档中哪里寻找自己的答案?

编辑:

我确实在文档中看到了这一点-

暂停从请求的分区中提取。将来对poll(long)的调用将不会从这些分区中返回任何记录,除非已使用resume(Collection)恢复了它们。请注意,此方法不会影响分区订阅。特别是,使用自动分配时,它不会导致组重新平衡。

但是我不认为这可以明确说明当前正在进行poll调用是否会返回我在poll内部调用的重新平衡回调中暂停的分区的数据。

解决方法

不确定我是否能向您提问。但是从规范上说,它是干净的pause()影响未来轮询的调用。

暂停从请求的分区中提取。将来对poll(long)的调用将不会从这些分区中返回任何记录,除非已使用resume(Collection)恢复了它们。请注意,此方法不会影响分区订阅。特别是,使用自动分配时,它不会导致组重新平衡。

https://kafka.apache.org/0102/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#pause(java.util.Collection)