我正在尝试发布一条消息,其中包含一个字段的并集为
{
"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 Boot项目中构建的。当我使用生成的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"}
]}
}