查看最新的 (v0.10) Kafka Consumer documentation :
“消费者的 位置 给出了下一条将发出的记录的偏移量。它将比消费者在该分区中看到的最高偏移量大一个。每次消费者收到时它都会自动前进数据调用 poll(long) 并接收消息。”
有没有办法查询服务器端分区可用的最大偏移量,没有 检索所有消息?
我试图实现的逻辑如下:
动机是我需要做一些批处理,但我希望处理器仅在有足够数据时唤醒(并且我不想两次检索所有数据)。
最佳答案
您可以使用 Consumer.seekToEnd()
方法,运行 Consumer.poll(0)
使其生效但立即返回,然后 Consumer.position()
查找所有订阅(或分配)主题分区的位置。这些将是所有分区的当前最终偏移量。这也将开始从代理获取这些偏移量的一些数据,但如果您随后返回到不同的位置,任何返回的数据都将被忽略。
目前,正如 serejja 所提到的,替代方案是使用旧的简单消费者,尽管该过程相当复杂,因为您需要手动查找每个分区的领导者。
关于apache-kafka - 我可以在不检索所有消息的情况下检索 Kafka 分区的最新可用偏移量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38684813/