[英]Mqtt Client Paho close issue (Java)
我有:
MqttAsyncClient mq;
...
mq = new MqttAsyncClient(myServer1,"app1");
mq.connect();
...
//(1)
//doing something with mq (pub/sub)
...
mq.disconnect();
mq.close();
//(2)
现在,我正在使用监视控制台,并且看到:
CALL线程将永远不会停止。 怎么会 ?
在调用close()方法之前,请确保asyncclient已断开连接,否则async的烦恼将永远阻塞。 您可以这样处理(与@ Tom&@ Mehmet Ince一样):
IMqttToken token = mq.disconnect();
int count = 0;
while (count++<5) {
if (token.isComplete()) {
mq.close();
break;
}
try {
Thread.sleep(2000l);
} cath(Exception e) {
//TODO
}
}
if (count > 5) {
mq.disconnectForcibly();
mq.close();
}
我认为使用应该使用: MqttClient client = new MqttClient...
然后调用client.connect();
MqttClient client = new MqttClient...
因为,它将调用代码: aClient.connect(options, null, null).waitForCompletion(getTimeToWait());
(您可以检查源代码)
这样就可以确保连接确实完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.