Eclipse paho 连接到分布式代理

Eclipse paho connecting to distributed broker

我正在使用 Apache Artemis 作为我的 mqtt 代理。我有一个以主从方式配置的 Artemis 集群。当主服务器发生故障时,备份服务器接管,客户端必须连接到从服务器。 Master 和 slave 的 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());

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

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

只需尝试连接到主服务器,用适当的错误处理包围调用。如果超时或连接错误,只需在处理程序中使用代码来调用 slave。如果那里也没有响应,请退出并假设链条已断开。

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

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

对于标记为 "high-availability" 的客户端,支持使用 "MqttConnectOptions".

指定的 url 列表

示例:

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