Mee*_*ack 4 java apache-kafka kafka-consumer-api
我正在使用Kafka控制台使用者来使用包含多个分区的主题消息:
kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic events
Run Code Online (Sandbox Code Playgroud)
但它只打印邮件正文.有没有办法打印记录元数据或分区号?因为我想知道消息来自哪里.
我已经探讨了控制台消费者文档http://documentation.kamanja.org/_static/command-ref/kafka-console-consumer.pdf,但未找到任何相关属性.
更新:
因此,我认为唯一的解决方案是覆盖DefaultMessageFormatter.class(我们可以通过使用--formatter属性运行kafka console consumer来设置它)并添加在#writeTo(..)方法中打印记录元数据的自定义逻辑.
小智 10
我发现我能够成功订阅主题并使用此 --properties 标志输出密钥和分区,如下所示:
kafka-console-consumer \
--topic <some-topic> \
--bootstrap-server :9092 \
--from-beginning \
--property print.key=true \
--property print.partition=true
Run Code Online (Sandbox Code Playgroud)
它给了我这样的输出:
Partition:0 "3" {"id": 2}
Run Code Online (Sandbox Code Playgroud)
考虑使用更强大的Kafka命令行使用者,如kafkacat https://github.com/edenhill/kafkacat/blob/master/README.md
例如,以下命令将打印消耗的每条消息的主题,分区,偏移量和消息有效内容/值:
kafkacat -b <broker> -C -t <topic> -f '%t %p @ %o: %s\n'
| 归档时间: |
|
| 查看次数: |
5437 次 |
| 最近记录: |