如何使用 Java 查找主题中存在的消息数,主题中存在的分区数?

How to find number of messages present in topic , number of partitions present for a topic using Java?

我有一个 kafka 主题,我必须使用 Java

找到主题中存在的消息数和主题中存在的分区数

以上信息可以使用kafkacat命令查找

kafkacat -L -b brokerip -> 此命令将显示元数据。您可以找到每个主题的分区数

kafkacat -C -b brokerip -t 主题名称 -e -q | \ wc -l -> 使用这个命令你可以找到消息的数量。另一种方法是您可以检查给定主题的最后一个偏移量以查找消息总数

上面是使用 metrics() api 获取滞后的示例,滞后表示 endOffsets 减去 currentOffset ,你可以得到 startOffset 以及 metric() ,计算 endOffset 减去 startOffset将得到主题分区中当前的记录数,将每个分区中的记录数求和以获得主题中的记录总数,

注意 StartOffset 并不总是 0,因为您可能有保留设置修剪旧消息

P.S 这就是我们向我们公司的开发人员显示此信息的方式,我们发现它是比设置虚拟消费者组开始并重置它更好的方法