【发布时间】:2017-08-04 14:22:41
【问题描述】:
我是卡夫卡的新手。我使用 java 创建了一个生产者并将一些消息发送到一个主题。有没有办法以编程方式查找特定主题中的消息数。
请分享你的想法。
【问题讨论】:
标签: apache-kafka
我是卡夫卡的新手。我使用 java 创建了一个生产者并将一些消息发送到一个主题。有没有办法以编程方式查找特定主题中的消息数。
请分享你的想法。
【问题讨论】:
标签: apache-kafka
KafkaConsumer API 提供了可以帮助您的接口。有beginningOffsets(Collection<TopicPartition> partitions) 和endOffsets(Collection<TopicPartition> partitions)。您可以为您的主题中的所有分区调用这些方法,然后找到每个主题分区的结束偏移量和开始偏移量之间的差异。然后聚合所有主题分区。这应该会给你主题中的消息数量。 (reference)
【讨论】:
vahid 所说的可能是一个解决方案,但您也可以使用以下解决方案:
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic --time -1
那么你必须对计数值求和。
在任何情况下,请考虑如果日志压缩处于活动状态,我的和 vahid 解决方案将不起作用,因为在这种情况下,偏移量之间可能存在一些“间隙”,因此仅计算差异不会为您提供消息数量。
【讨论】: