首页 > 解决方案 > 获取Java中每个主题分区的消息计数和最后一个偏移量

问题描述

使用 Admin Client 在 Java 代码中与 Kafka 进行通信。我们能够针对特定主题执行所有 CRUD 操作。我们的新要求是获取主题的消息数量,主题的所有消息的大小,主题的每个分区的最后偏移量。

输入:经纪人列表和主题预期输出如下 5 个分区

{
  "total": 10,
  "partitions": [
    3,
    2,
    1,
    3,
    1
  ],
  "offsets": [
    10,
    9,
    9,
    11,
    12
  ]
}

Total 是消息的大小(以字节为单位)。

尝试使用消费者组 ID。在这里,我们只有在主题被消费的情况下才能获取数据。我们想要获取主题的详细信息,无论它是否被消费。

请提出可能的方法

标签: apache-kafka

解决方案


使用命令行,您可以通过以下方式收集主题的每个分区的偏移量:

kafka%~ bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic mytopic1 

它将返回每个分区的偏移量,如下所示:

mytopic1:2:828012
mytopic1:1:827041
mytopic1:3:829577
mytopic1:0:829184

在这里你可以参考更多细节: https ://cwiki.apache.org/confluence/display/KAFKA/System+Tools


推荐阅读