以编程方式查找kafka主题大小

时间:2017-08-03 22:05:15

标签: apache-kafka

我是卡夫卡的新手。我使用java创建了一个生产者并向主题发送了一些消息。有没有办法以编程方式查找特定主题中的消息数。

请分享您的想法。

2 个答案:

答案 0 :(得分:1)

vahid所说的可能是一个解决方案,但您也可以使用以下方法:

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic --time -1

然后你必须将计数值相加。

在任何情况下,如果日志压缩处于活动状态,请考虑我的和vahid解决方案不起作用,因为在这种情况下,偏移之间可能存在一些“间隙”,因此只计算差异并不能提供消息数量。

答案 1 :(得分:0)

KafkaConsumer API提供可以帮助您的界面。有beginningOffsets(Collection<TopicPartition> partitions)endOffsets(Collection<TopicPartition> partitions)。您可以为主题中的所有分区调用这些方法,然后查找每个主题分区的结束偏移量和起始偏移量之间的差异。然后聚合所有主题分区。这应该会给你主题中的消息数量。 (reference