使用Kafka REST代理发布Avro消息会引发“将JSON转换为Avro失败”

问题描述 投票:0回答:1

我正在尝试发布一条消息,其中包含一个字段的并集为

{
  "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

我在这里想念什么?感谢您提供解决问题的建议。

spring-boot apache-kafka avro confluent confluent-schema-registry
1个回答
0
投票

我测试过的消息是,

{
   "somefield" : null
}

{
   "somefield" : [
      {"field1": "hello"}
    ]
}

但是,它应该改为传递为,

{
   "somefield" : {
      "array": [
      {"field1": "hello"}
    ]}
}
© www.soinside.com 2019 - 2024. All rights reserved.