Я создаю Java-микросервисное приложение на Spring Cloud + Kafka, и в процессе разработки я задал себе вопрос, правильно ли я создаю темы Kafka. Я делал это следующим образом:
@Bean
public NewTopic employee() {
return new NewTopic("email", 5, (short) 1);
}
Итак, проблема в том, что в каждом микросервисном проекте я создаю разные темы, у меня нет для этого централизованного места, это хорошая практика? Я думал о создании специального микросервиса только для создания тем Kafka, но я не уверен в этом, потому что не думаю, что этот микросервис будет иметь какое-либо применение, кроме создания тем в классе @Configuration. Итак, мой вопрос: где лучше всего создавать темы? Хорошо ли создавать их, как в приведенном выше примере, или, может быть, мне следует создать их другим способом? Должно ли место создания быть централизованным (типа специального микросервиса) или лучше создавать темы в разных микросервисах из-за требований домена?
Проблема в том, что в каждом проекте микросервиса я создаю разные темы, у меня нет централизованного места для этого, это хорошая практика?
Как правило, хороший подход — централизовать создание тем Kafka в выделенном микросервисе или управлении инфраструктурой, а не создавать их в каждом микросервисе. Это может упростить управление и избежать потенциальных возможных конфликтов.
Однако если ваши темы Kafka тесно связаны с конкретными микросервисами и их доменами, возможно, целесообразнее определить их локально.
В моей компании мы создаем репозиторий и используем диаграммы Helm для создания тем Kafka. Однако для внутренних тем, где потребителем и производителем является один и тот же микросервис, мы включаем их в диаграмму Helm сервиса.