繁体   English   中英

Android上的MQTT Eclipse Paho客户端,断开挂起并永不完成

[英]MQTT Eclipse Paho client on Android, disconnect hangs and never completes

我在Android应用程序中使用MQTT,使用Eclipse Paho页面上的最新jar。

我通过在QOS为1的情况下发送偶尔发布来手动检查连接,如果在某个超时下没有发送,我断开MQTT并重新连接。 当数据连接丢失然后重新获得时我也强制重新连接。

问题是disconnect方法挂起线程并且永远不会完成 - 即使是零或负超时。 它应该有30秒的内部超时,但它会超过这个并且永远不会完成。

MqttClient对象需要断开连接,否则它会在后台咀嚼数据。 我现在正在做的是分离一个单独的线程来断开MQTT,然后完全创建一个新的MqttClient。 它停止使用数据,但这是一个糟糕的解决方案,因为新线程只是挂起。

有任何想法吗?

编辑:进一步调查似乎阻止尝试在第70行停止CommsReceiver:

public void stop() throws IOException {
    synchronized (lifecycle) {
        //@TRACE 850=stopping receiver
        trace.trace(Trace.FINE,850);
        if (running) {
            running = false;
            try {
                //@TRACE 851=stop: wait on lifecycle
                trace.trace(Trace.FINE,851);
                // Wait for the thread to finish.
                lifecycle.wait(); // THREAD HANGS //
            }
            catch (InterruptedException ex) {
            }
        }
    }
}

问题是由于paho客户端的稳定版本中的计时窗口,如果您使用paho存储库的develop分支中的代码。 你不应该遇到这个问题,因为它在这个bug中被标记为已修复https://bugs.eclipse.org/bugs/show_bug.cgi?id=394066虽然它不是稳定的分支我找到了开发分支是可靠。

这里有一个错误: https ://bugs.eclipse.org/bugs/show_bug.cgi?id = 394066(可能是这个问题的OP,@ Vipul的信息)。 状态说明已解决,因此请查看新JAR何时可用于修复并使用它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM