1

我使用 Apache Artemis 作为我的 mqtt 代理。我有一个以主从方式配置的 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());

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

有人可以指导吗?非常感激。

4

2 回答 2

2

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

对于那些标记了“高可用性”的客户端,支持使用“MqttConnectOptions”指定的 url 列表。

例子:

        String[] URIs = {"address1","address2"};
        MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
        mqttConnectOptions.setServerURIs(URIs);
于 2016-11-09T13:56:41.547 回答
0

只需尝试连接到主服务器,用适当的错误处理围绕调用。如果超时或连接错误,只需在处理程序中添加代码来调用从站。如果那里也没有响应,则退出并假设链条已损坏。

此外,集群可以使用不同的配置来仅公开一个 IP,这更有意义。因此,这是一个面向外的别名队列,但集群中不同机器上的逻辑队列。如果您想将连接到集群的可能性分发给外部,这将在以后为您提供帮助。

于 2016-08-19T09:03:31.837 回答