我正在使用这个库:
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。
有什么建议吗?
由于
答案 0 :(得分:0)
这很可能是因为您有2个客户端尝试使用相同的客户端ID进行连接。客户端ID必须是唯一的,当第二个客户端使用相同的id连接时,代理将断开第一个客户端,这将立即尝试重新连接,然后启动第二个客户端,然后继续循环。
如果查看代理日志,应该很容易发现这种情况。