【问题标题】:Eclipse paho connecting to distributed brokerEclipse paho 连接到分布式代理
【发布时间】:2016-08-19 08:21:03
【问题描述】:

我使用 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());

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

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

【问题讨论】:

    标签: java paho activemq-artemis


    【解决方案1】:

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

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

    例子:

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

    【讨论】:

    • 需要提供以下格式“tcp://x.x.x.x”的地址
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多