Eclipse paho连接到分布式代理

时间:2016-08-19 08:21:04

标签: java paho activemq-artemis

我使用Apache Artemis作为我的mqtt经纪人。我有一个以Master-Slave方式配置的Artemis集群。当主服务器出现故障时,备份服务器将接管,客户端必须连接到从属服务器。主服务器和从服务器具有不同的IP。

在eclipse paho中创建MqttClient对象时,是否可以选择指定多个连接URL(主站和从站的地址)?

这样的东西
MqttClient cl = new MqttClient("LIST OF IPs", "Publisher", new    
MemoryPersistence());

而不仅仅是

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

这样当第一个地址的连接失败时,会尝试连接到下一个地址。

有人可以指导一下吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

许多语言的客户端库都有此选项。可在此处检查列表: https://www.eclipse.org/paho/downloads.php

对于那些"高可用性"标记,支持使用" MqttConnectOptions"指定的URL列表。

示例:

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

答案 1 :(得分:0)

尝试连接到主设备,通过适当的错误处理来包围呼叫。如果超时或连接错误,只需在处理程序中使用代码来调用slave。如果那里也没有回应,那就纾困并假设链条坏了。

此外,群集可以使用不同的配置来仅显示单个IP,这更有意义。因此,这里有一个面向外的别名队列,但在集群中的不同机器上有逻辑队列。如果您希望向外部分发连接到群集的可能性,这将在以后帮助您。