При создании или использовании сообщений в kafka вместе со схемой Avro, хранящейся в реестре схем, возможно ли автоматическое преобразование сообщений в классы сценария scala?
val props = new Properties()
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, classOf[KafkaAvroSerializer].getName)
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, classOf[KafkaAvroSerializer].getName)
props.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, "http://localhost:8081")
...
val producer = new KafkaProducer[String, User](props)
val user = User(123, "my-name")
producer.send(new ProducerRecord[String, User]("my-topic", user.id, user)
Сейчас, когда я это делаю, я получаю сообщение об ошибке:
java.lang.IllegalArgumentException: неподдерживаемый тип Avro. Поддерживаемые типы: null, Boolean, Integer, Long, Float, Double, String, byte [] и IndexedRecord.
Мой объект User - это просто класс case, например:
case class User(id: Int, name: String)
Я считаю, что мне нужно использовать какой-то генератор классов Avro для java, чтобы он правильно сериализовал / десериализовался, верно?
Есть ли способ пропустить этот шаг и каким-то образом автоматически сопоставить его с классом scala case с использованием Avro4s или чего-то еще?
Какие у меня варианты?
В идеале я хочу хранить только свои схемы в реестре схем.