如何通过Kafka CLI生产带Headers的JSON消息?
Kafka Console Producer 发送带消息头的正确方式
你的原命令无法正确解析消息头,原因是:
parse.key=true和key.separator=\n是用于解析消息键的配置,和消息头无关;- 缺少启用消息头解析的核心配置
parse.headers=true,导致程序不会识别你文件里的headers内容。
下面是两种可行的实现方式:
方案一:通过文件发送
1. 调整message.txt格式
将消息头和消息体放在同一行,用分隔符(比如|)区分,多个消息头用逗号分隔:
HeaderKey1:HeaderValue1,HeaderKey2:HeaderValue2|{"status": "success", "properties": []}
2. 执行发送命令
cat message.txt | \ docker exec -i kafka kafka-console-producer.sh \ --bootstrap-server localhost:9092 \ --topic test_topic \ --property parse.headers=true \ --property headers.separator=| \ --property headers.delimiter=:
parse.headers=true:启用消息头解析功能;headers.separator=|:指定消息头与消息体的分隔符;headers.delimiter=::指定单个消息头的键值对分隔符。
方案二:直接命令行输入发送
无需文件,直接在命令行输入消息内容(格式为[消息头列表]消息体):
- 启动producer:
docker exec -i kafka kafka-console-producer.sh \ --bootstrap-server localhost:9092 \ --topic test_topic \ --property parse.headers=true
- 在交互界面输入以下内容并回车发送:
[HeaderKey1:HeaderValue1,HeaderKey2:HeaderValue2]{"status": "success", "properties": []}
内容的提问来源于stack exchange,提问作者Seda Saakyan
相关产品推荐
相关产品推荐

