我们有一个基于物联网的应用程序设备,它被配置为通过来自各种服务提供商(如 Google、AWS 和 Azure)的 MQTT 桥与我们的仪表板进行通信。
所以流程是:
- 设备启动与服务提供商的 TLS 会话。
- 订阅特定主题并等待来自服务提供商的消息,超时时间为 5 秒。
- Dashboard 定期向同一主题发布消息。
- 物联网服务提供商将其广播给所有订阅的设备。
发布和订阅消息使用 MQTT QOS 1服务。
观察:
AWS 和 Azure 在上述流程中运行良好,但设备在 3-5 次成功迭代后停止接收来自 Google MQTT 桥的消息,即使我们的仪表板正在向 Google IoT MQTT 桥发布消息。
对于 Google,我们发现与 Azure 和 AWS 相比,控制流是不同的。
对于 Google,我们需要在每次等待接收消息之前订阅和取消订阅给定主题,而对于 AWS 和 Azure,我们需要在打开 MQTT 连接期间订阅一次。
问题:
有时会发生 5 秒设备超时,因为它无法从 Google MQTT 网桥接收订阅主题的消息。添加多次重试以克服超时问题未成功,因为在开机后设备操作 45-60 秒后设备无法从 Google MQTT 桥接接收消息,问题仍然存在。
- Google MQTT 网桥是否有限制定期接收消息而不是每次都订阅?
- 设备如何在不超时(5 秒)的情况下从 Google MQTT 网桥接收消息?
- 建立 MQTT 重新连接超时后,是否有任何解决方法可以恢复设备?