Общие файлы схемы Avro и контроль версий - PullRequest
0 голосов
/ 26 ноября 2018

Какова лучшая практика для совместного использования схемы Avro / сгенерированных источников?

У меня есть два приложения Java, которые общаются через Kafka.Я думал о том, чтобы использовать схемы Avro для событий, происходящих между приложениями.Поэтому извлечение схем Avro в общую библиотеку кажется хорошей идеей.Но что на самом деле является лучшей практикой здесь?Обычно генерируемые файлы не сохраняются в Source Control.Но это также относится и к классам Java, сгенерированным Avro.Если нет - тогда каждый потребитель должен будет генерировать свои собственные классы во время компиляции (но возможно ли это даже в том случае, если схемы находятся в зависимости от maven, gradle и т. Д.)

1 Ответ

0 голосов
/ 27 ноября 2018

В целом, контроль версий хорош, но вы должны игнорировать сгенерированные источники, такие как те, которые попадают в папку target в Maven.

Сгенерированные классы Java могут помещаться в разделяемую библиотеку, размещенную в Nexus / Artifactory, например, во время mvn deploy, и оттуда могут быть подходящим образом созданы для использования пользователями.

В сгенерированных классах avro-maven-plugin схема доступна как статическое поле, поэтому вам не нужно копировать эти ресурсы в пакет.

В противном случае, если вы используете реестр Confluent Schema, вы можете использовать тип GenericRecord в своих потребителях, а затем проанализировать сообщения, как обычно, например, для сообщения JSON.Например, Object fieldName = message.value().get("fieldName"), в то же время производители могут иметь определенный класс Avro

.
...