【发布时间】:2020-05-20 21:14:40
【问题描述】:
是否有更有效/更简单的方法来使用最新的 Java 中的 Kafka 客户端 2.4 API 获取主题/分区的大小/最新偏移量? 然后,通过将该组的偏移量与主题的大小进行比较来计算该消费者组的 Lag...
我知道这个问题已经被问到较旧的 Kafka 版本,还有一种方法可以从 Kafka 公开的 JMX 指标中获取这些信息,但是我被一个需要在 Java 中执行但最新 2.4 的遗留应用程序困住了Kafka 库。
据我了解,获取此信息的常用方法是:
- 最简单的部分:使用 KafkaAdminClient 上的 API 调用获取消费者 groupID 的主题/分区的偏移量,例如
public ListConsumerGroupOffsetsResult listConsumerGroupOffsets(String groupId, ListConsumerGroupOffsetsOptions options) - 最难的部分:确定每个分区的主题大小:
- 创建一个新的消费者并订阅主题
- 使用
consumer.seekToEnd(...)将消费者提前到最新的偏移量 - 使用
consumer.position(...)获取所有分区的消费者位置
- 最后,做 [size - current offset] 来确定每个分区的消费者组的滞后
因此,确定最后一个偏移量是一项相当繁重的操作...... 所以我的问题是:是否有一种更有效的方法可以在不使用虚拟消费者的情况下获取主题的最后偏移量,也许在最新的 2.4 API 中?主题/分区大小信息确实独立于任何消费者,因此在不使用消费者的情况下能够获得它似乎是合乎逻辑的......
谢谢!
码头
【问题讨论】:
-
你仍然需要使用消费者,但你可以使用
endOffsets方法,如果它更容易的话。在 2.5(2 月底发布)中,您可以在管理客户端上使用方法listOffsets来获取结束偏移量。 -
这是关于 2.5 的好消息! @user2683814 - 如果您发布您的评论作为答案 - 我会很乐意接受它:)
标签: java apache-kafka