Как получить брокеров Kafka в кластере, используя Spring Boot Kafka?

#spring-boot #apache-kafka #spring-kafka

#spring-boot #apache-kafka #spring-kafka

Вопрос:

У меня есть служба Spring Boot (2.3.3), использующая spring-kafka для текущего доступа к выделенной конфигурации Kafka / Zookeeper. Я использовал настройку application.properties spring.kafka.bootstrap-servers=localhost:9092 для доступа к моей службе разработки / тестирования Apache Kafka.

Однако в рабочей среде у нас есть кластер Kafka Brokers (на многих серверах), настроенный в Zookeeper, и меня попросили изменить мою службу для запроса Zookeeper, чтобы получить список брокеров и использовать этот список вместо конфигурации серверов начальной загрузки. Причина в том, что наши сотрудники DevOps, как известно, перенастраивают серверы / узлы и Kafka brokers.

В принципе, меня попросили сделать мой сервис независимым от того, где работают брокеры Apache Kafka. Все, что нужно знать моей службе, — это как получить список брокеров (информация о сервере начальной загрузки, включая хост и порт) из Zookeeper.

Есть ли способ в spring-boot и spring-kafka получить из Zookeeper список брокеров и использовать этот список брокеров (он же сервер начальной загрузки) в моем сервисе?

Ответ №1:

Spring делегирует kafka-clients для всех подключений; в течение длительного времени клиенты kafka больше не подключаются к Zookeeper, только к самим брокерам.

В Spring нет встроенной поддержки для запроса Zookeeper для определения списка брокеров.

Кроме того, в будущей версии Kafka Zookeeper вообще исчезнет; см. KIP-500.