Java, 如何在 apache kafka 中获取主题中的消息数

2022-08-31 08:47:26

我正在使用apache kafka进行消息传递。我已经在Java中实现了生产者和消费者。我们如何获取主题中的消息数量?


答案 1

它不是java,但可能很有用

./bin/kafka-run-class.sh kafka.tools.GetOffsetShell \
  --broker-list <broker>:<port> \
  --topic <topic-name> \
  | awk -F  ":" '{sum += $3} END {print sum}'

答案 2

从消费者的角度来看,想到这一点的唯一方法是实际使用消息并对其进行计数。

Kafka 代理公开 JMX 计数器,以获取自启动以来接收的消息数,但您无法知道其中有多少消息已被清除。

在大多数情况下,Kafka 中的消息最好被视为无限流,并且获取当前保留在磁盘上的数量的离散值无关紧要。此外,在处理一组代理时,事情变得更加复杂,这些代理在主题中都有一个消息子集。


推荐