Quarkus / SmallRye Reactive Messaging / Kafka подключаются к нескольким кластерам

В настоящее время у меня есть приложение Quarkus, которое использует тему Kafka и производит ее по другой теме Kafka. Он использует SmallRye Reactive Messaging. Это работает хорошо. Из-за внешних изменений тема для создания и тема для использования будут на серверах Kafka, которые находятся в другом кластере (и не должны / не могут быть объединены в один кластер).

В конфигурации приложения (yaml) устанавливаем сервер Kafka (брокер):

kafka:
  bootstrap:
    servers: localhost:9092

Добавление сервера здесь не помогает, затем он пытается распространить данные по брокерам, что не является моим намерением.

Можно ли подключиться к нескольким кластерам (возможно, установить сервер для каждой темы)? Ничего не могу найти в Интернете ни в документации Quarkus, ни в в документации SmallRye.


person Triple S    schedule 03.06.2021    source источник


Ответы (1)


Это не совсем ясно, но это объясняется в документации, например, на kafka inbound сказано, что вы можете настроить своего брокера глобально (используя kafka.<props>) или для каждого канала.

Вы можете передать каждому каналу все поддерживаемые свойства Kafka:

mp.messaging.incoming.chanel1.bootstrap.servers=kafka1:9092
mp.messaging.incoming.chanel2.bootstrap.servers=kafka2:9092
person loicmathieu    schedule 03.06.2021
comment
Было бы здорово, я вижу, вы могли бы прочитать такой текст. Когда я делаю это и пропускаю сервер начальной загрузки на основном уровне, я получаю DeploymentException: No config value of type [java.lang.String] exists for: kafka.bootstrap.servers. Хотя это было бы то, что, по-видимому, говорят документы, которые следует делать. Когда я продолжаю указывать сервер на уровне почты (т. Е. Как kafka1: 9092, kafka2: 9092), я получаю сообщение об ошибке Error while fetching metadata with correlation id <725> : {<chanel1>=LEADER_NOT_AVAILABLE - person Triple S; 03.06.2021
comment
сервер начальной загрузки можно настроить на каждом канале, как показано в ответе. kafka.bootstrap.servers определяет сервер по умолчанию, если вы не настраиваете его явно на канале. - person Clement; 03.06.2021
comment
Если у вас есть ошибка No config value of type [java.lang.String] exists for: kafka.bootstrap.servers, это означает, что нужно что-то еще настроить. Вы где-нибудь внедряете KafkaClient или включаете проверку работоспособности Kafka? Для Error while fetching metadata with correlation id <725> : {<chanel1>=LEADER_NOT_AVAILABLE вроде бы где-то проблема с подключением, без репродуктора сложно сказать. - person loicmathieu; 03.06.2021