Я пытаюсь использовать Confluent schema-registry и он работает для меня, следуя нескольким примерам, которые я нашел в Github (https://github.com/gAmUssA/springboot-kafka-avro).
Когда потребитель и производитель разделяют одно и то же Пространство имен как модель, чем его рабочая.
Когда потребитель находится в другом проекте с другим пространством имен, но с тем же классом (по имени и свойствам), чем он не работает.
Confluent Avro deserializer можно десериализовать в класс GenericData $ Record с правильными значениями, но он не может привести его к фактическому объекту.
Я пытаюсь это сделать:
@Data
@AllArgsConstructor
public class User {
String name;
int age;
}
...
@KafkaListener(topics = "users", groupId = "group_id")
public void consume(ConsumerRecord<String, User> record) {
log.info(String.format("Consumed message -> %s", record.value().getName()));
}
Приведенный выше код не работает при проблеме приведения.
Когда я добавляю к реквизиту спецификацию c .avro.reader = true, это также не удается.
Разве это не вся цель реестра схемы, чтобы быть центральным репо, чтобы данные могли быть десериализованы схемой в разных проектах и даже на разных языках (python, java,. net, et c ..)?
Чего мне не хватает?