大规模公共预订部署的 MQTT 注意事项
当您为大规模公共部署开发 MQTT 订户应用程序时,需要考虑一些重要因素。不同客户机使用相同客户机标识可能会导致意外关闭连接。您可以开发能够确保客户机标识唯一性的应用程序来防止发生此类连接中断情况。然后,可使用连接策略来确保仅允许使用这些唯一客户机标识进行连接。在大规模预订环境中,确保连接及其关联资源仅在需要的时间段内进行使用也很重要。
防止 MQTT 3.1.1 订户应用程序的会话接管
如果您使用的是 MQTT 3.1.1 客户机,那么可以按如下所示防止 MQTT 会话接管:
- 开发指定零长度客户机标识的客户机应用程序。 MQTT 3.1.1 规范允许对通过指定 cleanSession=True 来连接的客户机使用零长度的客户机标识。 当您使用零长度客户机标识进行连接时,IBM® IoT MessageSight 会生成唯一客户机标识,并实施有关干净会话的需求。
- 创建具有 ClientID 过滤器 _* 的连接策略。注: 自动生成的客户机标识以下划线开头。
- 使用允许自动生成的客户机标识的连接策略来配置端点。
防止 MQTT 3.1 和 MQTT 3.0 订户应用程序的会话接管
如果您使用的是 MQTT 3.1 或 MQTT 3.0 客户机,那么可以按如下所示防止 MQTT 会话接管:
- 开发生成唯一客户机标识的客户机应用程序;生成的客户机标识由前导固定字符串和随机生成的字符串构成。
您可以使用客户机标识中的固定字符串来配置授权连接的连接策略。随机生成的字符串可防止当不同客户机为其连接生成相同客户机标识时发生意外连接中断。
- 创建具有 ClientID 过滤器的连接策略,该过滤器以客户机应用程序生成的固定字符串开头。例如,如果客户机标识中的固定字符串是 My_public_app,请确保将 ClientID 过滤器设置为 My_public_app*。注: 在 MQTT 3.1 和 3.0 中,客户机标识长度不得超过 23 个字符。
- 使用对特定客户机标识授权的连接策略来配置端点,此类标识以客户机应用程序生成的客户机标识中的固定段开头。