如何使用 JSON 值设置 Kafka Rest Proxy Key Schema?
How do you set Kafka Rest Proxy Key Schema with JSON values?
我正在使用 Kafka 1.1 和 Kafka Rest Proxy 4.1.2。我一直在使用 String 键从 Kafka 流内部键入记录。我想使用 Rest Proxy 插入要连接的记录,但键周围的引号被转义了。
我正在用 Content-Type: application/vnd.kafka.json.v2+json
向 /topics/{someTopic}
发送 POST
请求,这导致了问题。
对于 Content-Type: application/vnd.kafka.avro.v2+json
和 key_schema 类型:字符串,键周围没有额外的引号,但我宁愿发送 json 值。
这是我要发送到 /topics
端点的内容。
{
"records": [
{
"key": "abc",
"value": {"animal": "dog"}
}
]
}
当我在 Kafka 流中传输数据时,密钥以 \"abc\"
的形式出现,并且显然没有与具有字符串键 abc
.
的记录连接
有没有一种方法可以指定具有 json 值的键架构,这样我的键就不会在它们周围出现转义引号?
根据 Kafka 文档,json 的消息格式是正确的。我认为,您应该尝试使用以下消息 header。
Content-Type: application/vnd.kafka.json.v2+json
Accept: application/vnd.kafka.v2+json, application/vnd.kafka+json, application/json
我建议您阅读以下 Kafka 文档。
当使用 Content-Type: application/vnd.kafka.json.v2+json
header 时,JSON 键将在所有字符串周围转义引号,以便它在流应用程序中正确反序列化。使用简单键时,字符串似乎确实被转义引用,而数字键未被修改。
Content-Type: application/vnd.kafka.binary.v2+json
将完全按照您提供的方式生成键值对,而无需向字符串键添加转义引号。您只需要对您的键和值进行 base64 编码。
您的示例 body 变为:
{
"records": [{
"key": "YWJj",
"value": "eyJhbmltYWwiOiJkb2cifQ=="
}]
}
我正在使用 Kafka 1.1 和 Kafka Rest Proxy 4.1.2。我一直在使用 String 键从 Kafka 流内部键入记录。我想使用 Rest Proxy 插入要连接的记录,但键周围的引号被转义了。
我正在用 Content-Type: application/vnd.kafka.json.v2+json
向 /topics/{someTopic}
发送 POST
请求,这导致了问题。
对于 Content-Type: application/vnd.kafka.avro.v2+json
和 key_schema 类型:字符串,键周围没有额外的引号,但我宁愿发送 json 值。
这是我要发送到 /topics
端点的内容。
{
"records": [
{
"key": "abc",
"value": {"animal": "dog"}
}
]
}
当我在 Kafka 流中传输数据时,密钥以 \"abc\"
的形式出现,并且显然没有与具有字符串键 abc
.
有没有一种方法可以指定具有 json 值的键架构,这样我的键就不会在它们周围出现转义引号?
根据 Kafka 文档,json 的消息格式是正确的。我认为,您应该尝试使用以下消息 header。
Content-Type: application/vnd.kafka.json.v2+json
Accept: application/vnd.kafka.v2+json, application/vnd.kafka+json, application/json
我建议您阅读以下 Kafka 文档。
当使用 Content-Type: application/vnd.kafka.json.v2+json
header 时,JSON 键将在所有字符串周围转义引号,以便它在流应用程序中正确反序列化。使用简单键时,字符串似乎确实被转义引用,而数字键未被修改。
Content-Type: application/vnd.kafka.binary.v2+json
将完全按照您提供的方式生成键值对,而无需向字符串键添加转义引号。您只需要对您的键和值进行 base64 编码。
您的示例 body 变为:
{
"records": [{
"key": "YWJj",
"value": "eyJhbmltYWwiOiJkb2cifQ=="
}]
}