gpt4 book ai didi

java - Mqtt 客户端 Paho 关闭问题 (Java)

转载 作者:行者123 更新时间:2023-11-30 04:13:31 28 4
gpt4 key购买 nike

我有:

MqttAsyncClient mq;
...
mq = new MqttAsyncClient(myServer1,"app1");
mq.connect();
...
//(1)
//doing something with mq (pub/sub)
...
mq.disconnect();
mq.close();
//(2)

现在我正在使用监控控制台,我看到:

  • 在 (1) 中,3 个 Mqtt 线程:MQTT REC、MQTT SND 和 MQTT 调用
  • 在 (2) 中,2 个 Mqtt 线程:MQTT SND 和 MQTT 调用
  • 再过几秒,只剩下 1 个线程MQTT 调用

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();
}

关于java - Mqtt 客户端 Paho 关闭问题 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19005492/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com