Kafka控制台消费者获得分区



我正在使用Kafka Console消费者用几个分区来消费该主题的消息:

kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic events

,但它仅打印出消息主体。是否有任何方法可以打印记录元数据或分区编号?因为我想知道消息从哪里开始。

我已经探索了控制台消费者doc http://documentation.kamanja.org/_static/command-ref/kafka-console-consumer.pdf,但没有找到任何相关属性。

更新:

因此,正如我看到的那样,唯一的解决方案是覆盖 defaultMessageFormatter.Class (我们可以通过运行 - formatter 属性来设置它,然后添加自定义在#writeto(..(方法中打印记录元数据的逻辑。

考虑使用更强大的kafka命令行消费者,例如kafkacat https://github.com/edenhill/kafkacat/kafkacat/blob/master/master/master/readme.md

例如,以下命令将打印每个消耗的消息的主题,分区,偏移和消息有效载荷/值:

kafkacat -b <broker> -C -t <topic> -f '%t %p @ %o: %sn'

我发现我成功地订阅了一个主题,并使用此键输出键和分区 - properties flag so:

kafka-console-consumer --topic <some-topic> --bootstrap-server localhost:9092 --from-beginning  --property print.key=true --property print.partition=true   

它给了我这样的输出:

Partition:0 "3" {"id": 2}

kafka 9没有什么可以打印的信息。

根据代码,消息格林特仅获取键和值。

try {
    formatter.writeTo(msg.key, msg.value, System.out)
}

--property print.key=true允许打印消息键。

在kafka 10中,还有一个有用的param print.timestamp

最新更新