#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.