我使用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());
这样当第一个地址的连接失败时,会尝试连接到下一个地址。
有人可以指导一下吗?非常感谢。
答案 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,这更有意义。因此,这里有一个面向外的别名队列,但在集群中的不同机器上有逻辑队列。如果您希望向外部分发连接到群集的可能性,这将在以后帮助您。