我正在使用Kafka1.1和Kafkarest代理4.1.2。我一直使用字符串键从Kafka流内部键入记录。我想使用rest代理插入要加入的记录,但密钥被转义引号括起来。
我要发一封信 POST
请求到 /topics/{someTopic}
与 Content-Type: application/vnd.kafka.json.v2+json
这导致了问题。
与 Content-Type: application/vnd.kafka.avro.v2+json
和key\u schema type:string,键周围没有额外的引号,但我更愿意发送json值。
这就是我要寄给 /topics
终结点。
{
"records": [
{
"key": "abc",
"value": {"animal": "dog"}
}
]
}
当我在Kafka流中传输数据时,关键是 \"\"
,显然没有与具有字符串键的记录连接 `` .
有没有办法用json值指定一个键模式,这样我的键就不会被转义引号括起来?
2条答案
按热度按时间m3eecexj1#
根据kafka文档,消息的格式对于json是正确的。我想,你应该试试下面的消息头。
我建议你看一下下面的Kafka文件。
https://docs.confluent.io/current/kafka-rest/api.html
gstyhher2#
当使用
Content-Type: application/vnd.kafka.json.v2+json
头,json键将在所有字符串周围有转义引号,以便在streams应用程序中正确反序列化。当使用简单键时,字符串似乎会被转义引用,而数字键则不会被修改。这个
Content-Type: application/vnd.kafka.binary.v2+json
将完全按照给定的方式生成键值对,而不向字符串键添加转义引号。您只需要对键和值进行base64编码。你的身体变成: