如何查询Kafka消费者已消费的消息总数量?
Kafka原生消费计数查询方案
Kafka本身提供了完善的原生能力查询消息生产、消费进度,无需在业务代码中额外做计数埋点,核心基于偏移量(offset)机制实现,具体使用方式如下:
1. 统计主题总发布消息数
用Kafka自带的kafka-run-class.sh工具可以直接拉取目标主题所有分区的最新写入偏移量,求和就是总发布消息数,命令如下:
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list <broker地址:端口> --topic <目标主题名> --time -1
返回结果格式为主题名:分区号:最新偏移量,把所有分区的偏移量相加即可得到截止到查询时间的总生产消息数。
2. 统计指定消费者组已消费消息数
用Kafka自带的kafka-consumer-groups.sh工具可以直接查询目标消费者组的已提交偏移量,求和就是总已消费消息数,命令如下:
kafka-consumer-groups.sh --bootstrap-server <broker地址:端口> --describe --group <消费者组名>
返回结果中:
LOG-END-OFFSET列对应分区的总写入偏移量,和上面第一步查到的数值一致CURRENT-OFFSET列对应该消费者组在当前分区的已提交消费偏移量
把所有分区的CURRENT-OFFSET相加就是总已消费消息数,两个数值的差值就是当前未消费的消息数,差值为0就代表所有消息都已经消费完成。
注意事项
如果你的消费者配置的是自动提交偏移量,查询结果和实际消费进度最多有不超过自动提交间隔的误差,对账时可以先暂停publisher写入,等待几秒让偏移量提交完成后再查询,就能拿到100%准确的对账数据。
如果需要在代码中集成统计逻辑,也可以直接调用Kafka的AdminClient API拉取上述偏移量数据,无需额外做业务埋点。
内容的提问来源于stack exchange,提问作者user2698580
相关产品推荐
相关产品推荐

