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

标签 java android activemq mqtt

我在 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 客户端保持 Activity 状态:

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

我读到client keep alive应该比server少,所以我选择了5秒和10秒。我希望这是实时应用程序的正确时间量。

关于java - Android MQTT 客户端无法重新连接到 ActiveMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19090486/

相关文章:

java - Android setOnKeyListener导致ANR(Application Not Responding)提示

android - 无法使用默认的 ListView 选择器

java - 如何从java异步发送soap消息

javascript - ActiveMQ-Stomp 消费者收不到消息

java - Java中什么时候给实例变量赋值合适?

java - 找不到依赖项 : expected at least 1 bean 的 [HrEmployeesReportOutput] 类型的合格 bean

java - 如何为自定义键值存储设计事务管理系统

java - Cordova 上的 Android Lollipop 通知图标 setColor

android - 意外删除 keystore 解决方案

activemq - 无法连接到 ActiveMQ 服务器 - activemq for mcollective 失败