如何使用json值设置kafka rest代理密钥模式?

jm81lzqq  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(507)

我正在使用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值指定一个键模式,这样我的键就不会被转义引号括起来?

m3eecexj

m3eecexj1#

根据kafka文档,消息的格式对于json是正确的。我想,你应该试试下面的消息头。

Content-Type: application/vnd.kafka.json.v2+json
   Accept: application/vnd.kafka.v2+json, application/vnd.kafka+json, application/json

我建议你看一下下面的Kafka文件。
https://docs.confluent.io/current/kafka-rest/api.html

gstyhher

gstyhher2#

当使用 Content-Type: application/vnd.kafka.json.v2+json 头,json键将在所有字符串周围有转义引号,以便在streams应用程序中正确反序列化。当使用简单键时,字符串似乎会被转义引用,而数字键则不会被修改。
这个 Content-Type: application/vnd.kafka.binary.v2+json 将完全按照给定的方式生成键值对,而不向字符串键添加转义引号。您只需要对键和值进行base64编码。
你的身体变成:

{
    "records": [{
        "key": "YWJj",
        "value": "eyJhbmltYWwiOiJkb2cifQ=="
    }]
}

相关问题