Один потребитель, использующий две разные темы в двух отдельных кластерах - PullRequest
0 голосов
/ 03 июля 2018

У меня есть один потребитель, которого я инициализирую списком брокеров (bootstrap.servers). В настоящее время в большинстве случаев список составлен из взаимосвязанных брокеров. Таким образом, если один из них подключается, то kafka автоматически заполняет список других брокеров.

Однако у меня может быть сценарий использования, в котором я хочу, чтобы один потребитель использовал две темы test1 и test2, которые присутствуют в двух отдельных кластерах C1 и C2. Я думал об использовании потребительского API, чтобы дать потребителю кафки двух брокеров, по одному от каждого из кластеров.

    Properties kafkaProps = new Properties();
    kafkaProps.put("bootstrap.servers", "b1:9092,b2:9092");

Здесь b1 - брокер с C1, а b2 - брокер с C2

Тогда я бы использовал consumer.subscribe(new ArrayList<String>() {{"test1","test2"}}).

Я хотел знать, является ли это правильным подходом или он вообще сработает. Пожалуйста, скажите мне, если вы хотите, чтобы я поделился какой-либо дополнительной информацией

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Только что проверил, поставив две разных кластера через запятую, разделенных в prop-

ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"prod-cluster:9092,dev-cluster:9092"

Он подобрал детали dev-кластера и обработал запрос. Изменение последовательности переворачивает кластер, выбранный потребителем. Ошибка не выдана.

В соответствии с документацией Kafka намерение иметь несколько брокеров с разделением строк - это отказоустойчивость, а не одновременное соединение. Потребитель может подключаться только к одному брокеру, который внутренне предоставляет метаданные соответствующего кластера, такие как сведения о разделе, лидеры и т. Д.

0 голосов
/ 03 июля 2018

Невозможно иметь две разные темы кластера под одним и тем же потребителем, когда потребитель запускает, выбирает всех брокеров и тему в кластере и пытается найти тему другого кластера, так как одна из тем не существует. появится сообщение об ошибке

Error while fetching metadata with correlation id 20 : {second-cluster-testtopic=UNKNOWN_TOPIC_OR_PARTITION}

у нас может быть один и тот же потребитель для двух разных тем в одном кластере, но рекомендуемые сценарии, такие как две темы с данными одного типа

...