使用 Kafka REST 代理发布 Avro 消息抛出 "Conversion of JSON to Avro failed"
Publishing Avro messages using Kafka REST Proxy throws "Conversion of JSON to Avro failed"
我正在尝试发布一条消息,其中一个字段有一个联合
{
"name": "somefield",
"type": [
"null",
{
"type": "array",
"items": {
"type": "record",
当 somefield
填充了一个数组时,使用 Kafka REST 代理发布消息不断抛出以下错误。
{
"error_code": 42203,
"message": "Conversion of JSON to Avro failed: Failed to convert JSON to Avro: Expected start-union. Got START_ARRAY"
}
与 somefield: null
相同的架构工作正常。
Java 类 使用来自 Avro 模式的 gradle 插件构建在 Spring 引导项目中。当我使用生成的 Java 类 并发布一条消息时,使用 Spring KafkaTemplate 填充数组,消息将使用正确的模式正确发布。 (架构取自生成的 Avro 特定记录)我复制了相同的 json 值和架构并通过 REST 代理发布,它因上述错误而失败。
我在 API 调用中有这些内容类型
accept:application/vnd.kafka.v2+json, application/vnd.kafka+json, application/json
content-type:application/vnd.kafka.avro.v2+json
我在这里错过了什么?感谢任何解决问题的建议。
我测试的消息是,
{
"somefield" : null
}
和
{
"somefield" : [
{"field1": "hello"}
]
}
但是,它应该被传递为,
{
"somefield" : {
"array": [
{"field1": "hello"}
]}
}
我正在尝试发布一条消息,其中一个字段有一个联合
{
"name": "somefield",
"type": [
"null",
{
"type": "array",
"items": {
"type": "record",
当 somefield
填充了一个数组时,使用 Kafka REST 代理发布消息不断抛出以下错误。
{
"error_code": 42203,
"message": "Conversion of JSON to Avro failed: Failed to convert JSON to Avro: Expected start-union. Got START_ARRAY"
}
与 somefield: null
相同的架构工作正常。
Java 类 使用来自 Avro 模式的 gradle 插件构建在 Spring 引导项目中。当我使用生成的 Java 类 并发布一条消息时,使用 Spring KafkaTemplate 填充数组,消息将使用正确的模式正确发布。 (架构取自生成的 Avro 特定记录)我复制了相同的 json 值和架构并通过 REST 代理发布,它因上述错误而失败。
我在 API 调用中有这些内容类型
accept:application/vnd.kafka.v2+json, application/vnd.kafka+json, application/json
content-type:application/vnd.kafka.avro.v2+json
我在这里错过了什么?感谢任何解决问题的建议。
我测试的消息是,
{
"somefield" : null
}
和
{
"somefield" : [
{"field1": "hello"}
]
}
但是,它应该被传递为,
{
"somefield" : {
"array": [
{"field1": "hello"}
]}
}