我是卡夫卡的新手。我使用java创建了一个生产者并向主题发送了一些消息。有没有办法以编程方式查找特定主题中的消息数。
请分享您的想法。
答案 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)