尽管MQTT设法连接,但无限期地重新连接

时间:2016-10-19 09:00:51

标签: java android mqtt

我正在使用这个库:

https://github.com/fusesource/mqtt-client

使用以下选项:

 MQTT mqtt = new MQTT();
 mqtt.setClientId(deviceId() + "-device");
 mqtt.setHost(getResources().getString(R.string.jms_uri));
 mqtt.setUserName(getResources().getString(R.string.jms_user));
 mqtt.setPassword(getResources().getString(R.string.jms_password));
 mqtt.setReconnectDelay(10000);
 mqtt.setReconnectDelayMax(60000);
 connection = mqtt.futureConnection();
 connection.connect().await(5, TimeUnit.SECONDS);

有时候(我无法重现它)它似乎松开连接并开始“疯狂地”重新连接。根据JMS,它每次都要管理连接,但我不知道为什么,它会不断重新连接(关闭和启动连接)。发生这种情况时,我唯一能做的就是停止应用程序。与此同时,重新连接到JMS并不富有成效,因为它无法接收任何消息。

它开始重新连接而不等待我为重新连接延迟设置的ms。

有什么建议吗?

由于

1 个答案:

答案 0 :(得分:0)

这很可能是因为您有2个客户端尝试使用相同的客户端ID进行连接。客户端ID必须是唯一的,当第二个客户端使用相同的id连接时,代理将断开第一个客户端,这将立即尝试重新连接,然后启动第二个客户端,然后继续循环。

如果查看代理日志,应该很容易发现这种情况。