解决有关 MQTT 客户机无法连接的问题
有多种原因可能导致 MQTT 客户机无法连接至遥测通道。
过程
请考虑下列原因,以诊断 MQTT 客户机无法连接的问题:
- 检查队列管理器和遥测 (MQXR) 服务是否正在运行。
启动队列管理器。 缺省情况下,MQXR 服务应随队列管理器一起启动。 如果您将 MQXR 服务控制配置为手动启动,那么可能需要从服务文件夹中启动该服务。 有关启动 MQXR 服务的更多信息,请参阅 启动和停止 MQXR 服务。
- 请检查是否正确定义了遥测通道和遥测 (MQXR) 服务并且它们正在运行。
您可以手动定义 MQXR 服务并将队列管理器的缺省传输队列设置为
SYSTEM.MQTT.TRANSMIT.QUEUE
,此队列优先于现有缺省传输队列。 这将使得队列管理器适合于 Telemetry。 或者,如果您尚未从 Telemetry 的“欢迎使用”页面来运行“定义样本配置”向导,那么可以考虑这样做。 - 您是否编写了自己的客户机?
如果编写了,那么编写的是使用 MQTT V3 协议而不是 V5 协议的客户机应用程序吗? 请尝试通过运行 MQTT 客户机实用程序来找出问题。
- 您具有有效的客户机标识名称吗?
连接到 IBM® MQ时, MQTT 客户机标识应小于 23 个字符,并且仅包含字母字符,数字字符和句点 (.) ,正斜杠 (/) ,下划线 (_) 和百分号 (%)。
- 是否已连接 MQTT 客户机并用尽 MQTT
keep alive 时间间隔?
“保持活动”属性是以毫秒为单位的时间间隔,经过此时间间隔之后,MQTT 客户机就会因处于不活动状态而断开连接。 如果 MQXR 服务在保持活动时间间隔内未从客户机中接收到任何通信,它就会与客户机断开连接。
- 是否有大量 MQTT 客户机尝试同时连接至遥测通道?
每个遥测通道具有一个 backlog 属性。 这是遥测通道支持的并发连接请求数。 确保未将该值设置为小于尝试连接的 MQTT 客户机的数目。
- 请检查 TCP/IP 连接是否仍然处于活动状态。