有一个应用程序(不是我的)从Kafka读取消息,对它们进行一些处理,并将记录存储在数据库中。我已经用Java编写了一个程序,它以给定的速率将消息写入队列。现在,它通过在测试运行结束时查询数据库来确定性能的简单度量,以确保记录在=记录中。但是,我想将其展开以定期检查队列,以查看应用程序尚未处理的待处理邮件数量,以确定它是否已备份。
我认为我可以检查Zookeeper中应用程序组ID的偏移量。我查看了Kafka documentation,但它只提供了基本的消费者示例,API文档最多也很稀疏,因此我不确定如何查找此信息。
我需要调用哪些API才能找出应用程序当前所在队列中的位置,以及该位置后面队列中有多少消息?
我使用Kafka 2.10-0.8.2.1与一个Zookeeper实例和三个Kafka实例,并且负载测试器使用0.8.2.1 Java API。有问题的主题有三个分区(每个Kafka服务器上有一个分区),但是为了测试的目的,只有一个消费者。
答案 0 :(得分:6)
我建议查看Kafka中已经提供的工具(如果需要直接调用API,代码在src中可用)。特别是,
$ bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --group consumer-group1 --zkconnect zkhost:zkport --topic topic1
将显示偏移和延迟:
consumer-group1,topic1,0-0 (Group,Topic,BrokerId-PartitionId)
Owner = consumer-group1-consumer1
Consumer offset = 70121994703
= 70,121,994,703 (65.31G)
Log size = 70122018287
= 70,122,018,287 (65.31G)
Consumer lag = 23584
= 23,584 (0.00G)
参考文献:
答案 1 :(得分:0)
Kafka有几个偏差(通过JMX)可以用来计算消费者有多少滞后(每个主题,每个分区)。这些是最新抵消(基本上是Kafka Broker的新数据写入)和消费者抵消(消费者的读取)。这两者之间的差异被称为消费者滞后,这告诉你实时消费者的落后程度。根据这些信息,我们还可以获得经纪人写入率和消费者阅读率,这也很方便您在Kafka监控工具中了解和查看。有关详细信息,请参阅Kafka Consumer Lag Monitoring。如果您只想要一个可以绘制一系列Kafka指标的工具,请参阅SPM for Kafka monitoring。 HTH。