2016-08-19 2 views
0

Я использую Apache Artemis в качестве моего брокера mqtt. У меня есть кластер Artemis, который настроен в режиме Master-Slave. Когда мастер-сервер выходит из строя, сервер резервного копирования берет на себя и клиент должен подключиться к подчиненному серверу. У ведущего и ведомого есть разные IP-адреса.Eclipse paho подключение к распределенному брокеру

Есть ли возможность указать множественный URL-адрес соединения (адрес ведущего и ведомого) при создании объекта MqttClient в eclipse paho?

Что-то вроде

MqttClient cl = new MqttClient("LIST OF IPs", "Publisher", new  
MemoryPersistence()); 

вместо просто

MqttClient cl = new MqttClient("tcp://localhost:1883", "Publisher", new 
MemoryPersistence()); 

таким образом, что, когда соединение с первого адреса не удается, подключение к следующему адресу пробовал.

Не могли бы вы помочь в этом? Очень признателен.

ответ

0

Эти библиотеки имеют библиотеки клиентов на многих языках. Список можно проверить здесь: https://www.eclipse.org/paho/downloads.php

Для тех клиентов, для которых отмечена «высокая доступность», список поддерживаемых URL-адресов будет указан с помощью «MqttConnectOptions».

Пример:

 String[] URIs = {"address1","address2"}; 
     MqttConnectOptions mqttConnectOptions = new MqttConnectOptions(); 
     mqttConnectOptions.setServerURIs(URIs); 
0

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

Также кластер мог использовать другую конфигурацию, чтобы выявить только один IP-адрес, который имеет больше смысла. Итак, вот одна очередь псевдонимов, а не логические очереди на разных машинах в кластере. Это поможет вам позже, если вы хотите распространять на внешние возможности возможность подключения к кластеру.

Смежные вопросы