【问题标题】:Android MQTT Client unable to reconnect to ActiveMQAndroid MQTT 客户端无法重新连接到 ActiveMQ
【发布时间】:2013-10-06 02:18:06
【问题描述】:

我在 android 中使用 MQTT 与 ActiveMQ 服务器通信。我用这个例子实现了android mqtt客户端:http://dalelane.co.uk/blog/?p=1599。 当我第一次打开 android 应用程序时,它连接到 ActiveMQ 并且一切正常。 当我关闭应用程序时,删除应用程序数据并重新打开 android 以尝试重新连接到 ActiveMQ 我在 ActiveMQ 中收到以下错误:

2013-09-29 19:25:50,064 | WARN  | Transport Connection to: tcp://192.168.0.108:54395 failed: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///192.168.0.108:54395@1883
2013-09-29 20:18:20,417 | WARN  | Failed to add Connection ID:32132151513546-2:5, reason: javax.jms.InvalidClientIDException: Broker: localhost - Client: dbasdfasdfe0b already connected from tcp://192.168.0.108:59211 | org.apache.activemq.broker.TransportConnection | ActiveMQ Transport: tcp:///192.168.0.108:36745@1883

我猜这与在尝试重新连接之前未断开与服务器的连接有关。也许我可以配置 ActiveMQ 以在 ActiveMQ 发现客户端断开连接时删除未使用的连接并尽快断开客户端连接?

【问题讨论】:

    标签: java android activemq mqtt


    【解决方案1】:

    所以我最终通过在 activemq.xml 中配置这一行来更改 ActiveMQ keep-alive:

    <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?transport.defaultKeepAlive=10000"/>
    

    并像这样配置 MQTT android 客户端保持活动状态:

    keepAliveSeconds = 5;
    mqttClient.connect(mqttClientId, true, keepAliveSeconds);
    

    我读到客户端保持活动应该少于服务器,这就是我选择 5 和 10 秒的原因。我希望这是实时应用程序的合适时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-27
      • 2022-01-14
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多