java – Android MQTT客户端无法重新连接到ActiveMQ

我在
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发现客户端断开连接时更快断开客户端连接?

最佳答案 所以我最终通过在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秒的原因.我希望这是实时应用程序的适当时间.

点赞