解決問題:MQTT 用戶端連線中斷
找出導致用戶端在順利連接並執行或長或短的一段時間之後,擲出非預期的 ConnectionLost 異常狀況的原因。
開始之前
MQTT 用戶端已順利連接。 用戶端可能會執行一長段時間。 如果用戶端啟動間隔很短,則順利連接與連接中斷之間的時間可能很短。
區分中斷的連線與成功建立、隨後中斷的連線並不困難。 中斷的連線由 MQTT 用戶端呼叫 MqttCallback.ConnectionLost 方法來定義。 該方法僅在順利建立連線之後呼叫。 該症狀與 MqttClient.Connect 在收到負面確認通知或逾時之後擲出異常狀況不同。
如果 MQTT 用戶端應用程式未使用 IBM® WebSphere® MQ提供的 MQTT 用戶端程式庫,則症狀取決於用戶端。 在 MQTT v3 通訊協定中,症狀是伺服器要求的回應不及時,或者 TCP/IP 連線失敗。
關於此作業
MQTT 用戶端利用可擲出異常狀況呼叫 MqttCallback.ConnectionLost,以回應在收到正面連線確認通知之後發生的伺服器端問題。 MQTT 用戶端從 MqttTopic.publish 和 MqttClient.subscribe 返回時,會將該要求傳送至負責傳送和接收訊息的 MQTT 用戶端執行緒。 會透過將可擲出異常狀況傳遞至 ConnectionLost 回呼方法,來以非同步方式報告伺服器端錯誤。
遙測 (MQXR) 服務一律寫入首次失敗資料擷取檔案(如果它中斷連線的話)。