В каком месте лучше создавать темы Kafka программно?

Я создаю Java-микросервисное приложение на Spring Cloud + Kafka, и в процессе разработки я задал себе вопрос, правильно ли я создаю темы Kafka. Я делал это следующим образом:

    @Bean
    public NewTopic employee() {
        return new NewTopic("email", 5, (short) 1);
    }

Итак, проблема в том, что в каждом микросервисном проекте я создаю разные темы, у меня нет для этого централизованного места, это хорошая практика? Я думал о создании специального микросервиса только для создания тем Kafka, но я не уверен в этом, потому что не думаю, что этот микросервис будет иметь какое-либо применение, кроме создания тем в классе @Configuration. Итак, мой вопрос: где лучше всего создавать темы? Хорошо ли создавать их, как в приведенном выше примере, или, может быть, мне следует создать их другим способом? Должно ли место создания быть централизованным (типа специального микросервиса) или лучше создавать темы в разных микросервисах из-за требований домена?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проблема в том, что в каждом проекте микросервиса я создаю разные темы, у меня нет централизованного места для этого, это хорошая практика?

Как правило, хороший подход — централизовать создание тем Kafka в выделенном микросервисе или управлении инфраструктурой, а не создавать их в каждом микросервисе. Это может упростить управление и избежать потенциальных возможных конфликтов.

Однако если ваши темы Kafka тесно связаны с конкретными микросервисами и их доменами, возможно, целесообразнее определить их локально.

В моей компании мы создаем репозиторий и используем диаграммы Helm для создания тем Kafka. Однако для внутренних тем, где потребителем и производителем является один и тот же микросервис, мы включаем их в диаграмму Helm сервиса.

Другие вопросы по теме

Соединителю MSK не удалось найти класс в кластере MSK в режиме KRaft
Имя потребительской темы NestJS kafka не определено
Я получаю сообщение об ошибке: org.apache.kafka.common.errors.InvalidReplicationFactorException: коэффициент репликации: 3 больше, чем доступные брокеры: 1
Потоки Kafka правильно обрабатывают сообщения, но выдают исключение десериализации
Какой неустаревший способ установки менеджера транзакций в контейнер прослушивателя - это Spring Kafka 3.2?
Как использовать Kafka в режиме SASL_SSL
Тайм-аут соединения: невозможно подключить монго к дебезию для CDC
Неожиданный запрос Kafka типа METADATA во время установления связи SASL при подключении потребителя к серверу Kafka
@KafkaHandler в потребителе не использует сообщение темы как объектный класс, а только как строку
Потоковая передача Spark + интеграция с Kafka, чтение данных из Kafka каждые 15 минут и сохранение смещения последнего чтения с помощью PySpark