Как динамически создавать и удалять темы с помощью библиотеки spring-kafka

avatar
nihar
1 июля 2021 в 16:33
570
1
0

Как динамически создавать и удалять Topics с помощью библиотеки spring-kafka? Спасибо.

Я пробовал AdminClient. Но мне нужна какая-то оболочка, которая может помочь мне достичь этого, используя spring-kafka без создания собственного класса и его тестирования.

У

spring-kafka уже есть один для создания Topic. Но для удаления я понятия не имею.

Источник
OneCricketeer
1 июля 2021 в 18:07
0

Весна позволяет @Bean Topic. Но для удаления вам нужно будет «обернуть» AdminClient. Возможно, если вы добавите свой код, мы сможем предоставить больше информации

Ответы (1)

avatar
Gary Russell
1 июля 2021 в 17:50
0

Для таких операций можно использовать AdminClient.

https://kafka.apache.org/27/javadoc/index.html?org/apache/kafka/clients/admin/AdminClient.html

nihar
1 июля 2021 в 17:56
0

Уже использовал его Гэри. Но я не смог найти ничего, кроме TopicBuilder в spring-kafka только для создания тем. Мне нужно что-то из библиотеки spring-kafka. если он недоступен, могу ли я как-то создать оболочку? Спасибо.

OneCricketeer
1 июля 2021 в 17:59
0

@nihar Пожалуйста, отредактируйте свой вопрос, чтобы показать, что вы пробовали.

Gary Russell
1 июля 2021 в 18:26
0

spring-kafka предоставляет KafkaAdmin, который поддерживает только небольшое подмножество функций AdminClient — он используется для создания тем для @Bean типа NewTopic во время запуска приложения. docs.spring.io/spring-kafka/docs/current/reference/html/… Для всех других операций (например, динамическое добавление/удаление тем во время выполнения) вы должны использовать AdminClient напрямую.

nihar
11 июля 2021 в 11:24
0

Спасибо Гэри. Но согласно docs.spring.io/spring-kafka/docs/current/api/org/…. -> Вы можете создавать темы без брокера после инициализации контекста приложения. Но зачем тогда тема, если брокера не существует?

Gary Russell
12 июля 2021 в 15:06
0

Если есть bean-компоненты NewTopicKafkaAdmin), платформа попытается проверить или создать темы во время инициализации. По умолчанию приложение не запускается, если брокер не работает. Если вы установите для этого логического значения значение false, приложение запустится, и вы сможете вручную вызвать initialize() для создания тем, определенных bean-компонентами. Вы также можете добавить bean-компоненты в контекст приложения позже, и вызов initializ() создаст их.