Чтение сообщения от Кафки с помощью java.util.List в схеме avro - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь прочитать сообщение от 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?Я использую Confluent 3.1.2

1 Ответ

0 голосов
/ 09 января 2019

A List - это интерфейс, он не имеет конструктора или конкретной реализации.Ваш продюсер, вероятно, использует ArrayList, и поэтому должны читатель схема и потребитель

Убедитесь, что схема определена с "java-class" : "java.util.ArrayList"

...