我正在使用Kafka控制台使用者来使用包含多个分区的主题消息:
kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic events
但它只打印邮件正文。有没有办法打印记录元数据或分区号?因为我想知道消息来自哪里。
我已经探索了控制台消费者文档http://documentation.kamanja.org/_static/command-ref/kafka-console-consumer.pdf,但未找到任何相关属性。
更新:
因此,我认为唯一的解决方案是覆盖 DefaultMessageFormatter.class (我们可以通过使用 - formatter 属性运行kafka console consumer来设置它)并添加自定义在#writeTo(..)方法中打印记录元数据的逻辑。
答案 0 :(得分:6)
考虑使用更强大的Kafka命令行使用者,例如kafkacat https://github.com/edenhill/kafkacat/blob/master/README.md
例如,以下命令将为每条消息打印主题,分区,偏移量和消息有效负载/值:
kafkacat -b <broker> -C -t <topic> -f '%t %p @ %o: %s\n'
答案 1 :(得分:2)
对于kafka 9,没有任何开箱即用的信息可以打印出来。
根据代码,消息格式化器只获取键和值。
try {
formatter.writeTo(msg.key, msg.value, System.out)
}
--property print.key=true
允许打印消息密钥。
在kafka 10中,还有一个有用的参数print.timestamp
答案 2 :(得分:1)