我在我的項目中使用MQTT API來讀取數據。 (org.eclipse.paho org.eclipse.paho.client.mqttv3)(Paho)MQTT回調沒有關閉
當我關閉客戶端,mqttcallback仍然有效。 我通過在對象上調用unsubscribe(...)
,disconnect()
和close()
來關閉mqtt。
我試着將回調設置爲null
。沒什麼幫助。
mqtt客戶端關閉後。這是仍然不斷出現在日誌中的痕跡。
> com.xxx.binge.sources.mqtt.BingeMQTTReader$BingeMQTTCallback.connectionLost(BingeMQTTReader.java:479)
> at org.eclipse.paho.client.mqttv3.internal.CommsCallback.connectionLost(CommsCallback.java:247)
> at org.eclipse.paho.client.mqttv3.internal.ClientComms.shutdownConnection(ClientComms.java:356)
> at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:146)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: com.xxx.vds.api.VDSException: MQTT Connection exception
> at com.xxx.binge.sources.mqtt.BingeMQTTReader.reconnectWithRetry(BingeMQTTReader.java:334)
> at com.xxx.binge.sources.mqtt.BingeMQTTReader.access$200(BingeMQTTReader.java:46)
> at com.xxx.binge.sources.mqtt.BingeMQTTReader$BingeMQTTCallback.connectionLost(BingeMQTTReader.java:473)
> ... 4 more
> Caused by: Unable to connect to server (32103) - java.net.ConnectException: Connection refused
> at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79)
> at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:590)
> ... 1 more
> Caused by: java.net.ConnectException: Connection refused
> at java.net.PlainSocketImpl.socketConnect(Native Method)
> at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
> at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
> at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
> at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
> at java.net.Socket.connect(Socket.java:579)
> at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70)
> ... 2 more
我MqttClient正確停止我。問題在於MqttCallback沒有關閉。此線程繼續運行。這是我如何設置回調 ' BingeMQTTCallback implements MqttCallback {...} callback = new BingeMQTTCallback(); client.setCallback(callback); ' 在問題中發佈的日誌在client.disconnect()被調用之後。 – nandini
將當前包裝設置爲回調處理程序 –
好的,將嘗試這個並嘗試更新。目前我在應用程序中將其作爲內部類。 – nandini