![[AIX]](ngaix.gif)
![[Windows]](ngwin.gif)
![[Linux]](nglinux.gif)
正在解决问题: MQTT 客户机连接已断开
了解在成功建立连接并且运行较短或较长一段时间之后导致客户机抛出意外的 ConnectionLost 异常的原因。
开始之前
MQTT 客户机已成功连接。 客户机可能已启动较长一段时间。 如果不同客户机之间的启动时间间隔较短,那么从成功连接到连接断开之间的时间可能较短。
区分“已断开的连接”与“已成功建立连接、但是稍后又断开的连接”并不难。 断开的连接由调用 MqttCallback.ConnectionLost 方法的 MQTT 客户机定义。 仅在已成功建立连接之后才调用此方法。 症状不同于 MqttClient.Connect 在接收到否定确认信息或者超时之后抛出异常。
如果 MQTT 客户机应用程序未使用 IBM® MQ提供的 MQTT 客户机库,那么症状取决于客户机。 在 MQTT v3 协议中,症状是缺少对服务器请求的及时响应,或者 TCP/IP 连接失败。
关于本任务
MQTT 客户机调用 MqttCallback.ConnectionLost 时发生可抛出异常,以响应在接收到肯定连接应答后迂到的任何服务器端问题。 当 MQTT 客户机从 MqttTopic.publish 和 MqttClient.subscribe 返回时,会将请求传输到负责发送和接收消息的 MQTT 客户机线程。 通过将可抛出异常传递至 ConnectionLost 回调方法,从而以异步方式报告服务器端错误。