【问题标题】:Reading message from Kafka with java.util.List in avro schema使用 avro 模式中的 java.util.List 从 Kafka 读取消息
【发布时间】:2018-11-04 12:42:45
【问题描述】:

我正在尝试使用具有以下属性的消费者从 Kafka 读取消息

value.deserializer=io.confluent.kafka.serializers.KafkaAvroDeserializer
key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
specific.avro.reader=true

架构是

{
      "type" : "array",
      "items" : {
          "type" : "record",
          "name" : "MyDto",
          "namespace" : "test.dto",
          "fields" : [ {
            "default" : null,
            "name" : "version",
            "type" : ["null","string"]
          }, {
            "default" : null,
            "name" : "testName",
            "type" : ["null","string"]
          }, {
            "name" : "keys",
            "type" : {"type": "array", "items": "string"},
            "java-class" : "java.util.List"
          }]
        },
      "java-class" : "java.util.List"
}

对象已使用此架构成功写入 Kafka。但是在反序列化时我遇到了异常java.lang.NoSuchMethodException: java.util.List.<init>()

是否可以使用 java.util.List 类?我正在使用融合 3.1.2

【问题讨论】:

    标签: apache-kafka avro confluent-platform confluent-schema-registry


    【解决方案1】:

    List 是一个接口,它没有构造函数或具体实现。您的生产者可能正在使用 ArrayList,阅读器架构和消费者也应该如此

    确保架构是用"java-class" : "java.util.ArrayList"定义的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-13
      • 2016-10-08
      • 2022-11-25
      • 2021-12-28
      • 2017-04-04
      • 2018-01-12
      • 1970-01-01
      • 2020-03-17
      相关资源
      最近更新 更多