問題の解決: MQTT クライアントの接続が切断される
正常に接続され、短時間または長時間実行された後で、予期しない ConnectionLost 例外をクライアントがスローする原因となっているものを突き止めます。
始める前に
MQTT クライアントの接続は正常に行われました。クライアントの接続はしばらく続く可能性があります。クライアントが短い間隔でのみ開始している場合、接続が成功してから接続が切断するまでの時間は短い可能性があります。
切断された接続と、正常に行われた後に切断された接続を見分けるのは難しくありません。切断された接続は、MqttCallback.ConnectionLost メソッドを呼び出す MQTT クライアントによって定義されます。 このメソッドは、接続が正常に確立されてからでなければ呼び出されません。症状は、否定応答を受信するかタイムアウトになった後で例外をスローする MqttClient.Connect とは異なります。
WebSphere® MQ に付属する MQTT クライアント・ライブラリーを MQTT クライアント・アプリケーションが使用していない場合、症状はクライアントによって異なります。 MQTT v3 プロトコルでは、サーバーへの要求に対する応答がタイムリーに行われない、あるいは TCP/IP 接続が失敗する、という症状が現れます。
このタスクについて
MQTT クライアントは、接続の肯定応答を受信した後に発生したサーバー・サイドの問題に対して、スロー可能な例外とともに MqttCallback.ConnectionLost を呼び出します。 MQTT クライアントが MqttTopic.publish および MqttClient.subscribe から戻ると、メッセージを送受信する役割を持つ MQTT クライアント・スレッドに要求を転送します。 サーバー・サイドのエラーは、スロー可能な例外を ConnectionLost コールバック・メソッドに渡すことによって非同期で報告されます。
テレメトリー (MQXR) サービスは、接続を切断する場合には常に、First Failure Data Capture ファイルを作成します。