Другие места для хранения схем Apache Avro, кроме пути к классам

Возможно, кто-то уже задавал этот вопрос, но после некоторых поисков я все еще не нашел ответа.

У меня есть несколько приложений Spring Boot, которые должны взаимодействовать друг с другом посредством потоковой передачи событий и вызовов REST. Чтобы обеспечить согласованность DTO, я хотел бы использовать Apache Avro для создания классов Java, но я не знаю, где хранить схемы Avro.

Скажем, App1 должен вызывать App2, поэтому App2 генерирует схемы DTO, которые App1 будет использовать для потребления своих данных. Где я могу хранить схемы App1, чтобы App2 мог использовать их для создания необходимых классов Java.

Точно так же App1 публикует сообщения в Redis и других приложениях, которые читают эти сообщения, которые необходимо десериализовать в объект Java с использованием схем Avro, было бы очень полезно, если бы я мог где-то централизовать эти схемы.

Я использую плагин Maven и Avro maven.

Спасибо большое за вашу помощь.


person akuma8    schedule 20.02.2020    source источник


Ответы (2)


Вы можете создать службу APP_commons, которая будет обслуживать схемы avro, которые будут содержать соответствующие методы для генерации значений / данных, которые нужны каждому приложению.

APP_commons можно добавить как зависимость в pom для APP1 и APP2.

Надеюсь это поможет! Также вы можете использовать фальшивых клиентов.

person Suzy    schedule 21.02.2020
comment
Спасибо за ответ, но почему бы не добавить все DTO в эту банку APP_commons? Я бы не хотел делать обычную банку - person akuma8; 24.02.2020
comment
Вы можете сделать это. В этом случае вам нужно будет использовать клиентов Feign для вызова между двумя микросервисами. - person Suzy; 25.02.2020

Я нашел решение в этом проекте Spring Cloud https://github.com/spring-cloud/spring-cloud-schema-registry Он предоставляет все, что мне нужно.

person akuma8    schedule 30.03.2020