首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于Google IoT MQTT桥的问题

关于Google IoT MQTT桥的问题
EN

Stack Overflow用户
提问于 2018-04-11 11:45:05
回答 2查看 651关注 0票数 1

我们有一个基于IoT的应用程序设备,它被配置为通过MQTT桥从谷歌、AWS和Azure等各种服务提供商与我们的仪表板进行通信。

所以流程是:

  1. 设备启动与服务提供者的TLS会话。
  2. 订阅特定的主题,等待服务提供者的消息,超时时间为5秒。
  3. 仪表板定期将消息发布到相同的主题。
  4. IoT服务提供商将其广播到订阅的所有设备。

发布和订阅消息使用MQTT QOS 1服务。

Observation:

AWS和Azure在上面的流程中运行良好,但是设备在3到5次成功的迭代之后停止接收来自Google桥的消息,尽管我们的仪表板将消息发布到Google IoT MQTT桥。

对于Google,我们已经发现,与Azure和AWS相比,控制流是不同的。

对于Google,在等待接收消息之前,我们需要每次订阅和取消订阅给定的主题,而对于AWS和Azure,我们需要在打开MQTT连接期间订阅一次。

发行:

有时5秒设备超时发生,因为它无法从Google桥接收订阅主题的消息。添加多次重试以克服超时问题是不成功的,因为问题仍然存在,因为设备在开机45-60秒后无法接收来自Google桥的消息。

  • 谷歌MQTT网桥是否存在定期接收消息而不每次订阅的约束?
  • 设备如何在不超时(5秒)的情况下从Google桥接收消息?
  • 在建立MQTT重新连接后设备超时后,是否有恢复设备的解决办法?
EN

回答 2

Stack Overflow用户

发布于 2018-04-14 21:59:02

我也使用谷歌物联网核心,在使用paho mqtt包时,mqtt客户端的设备端代码是golang。这个客户端包支持OnConnect处理程序,在使用这个处理程序时,我实现了我认为您正在寻找的恢复。通过这个处理程序,我重新订阅了"config“主题。

我认为google没有保存客户所订阅的订阅,因此客户端在成功连接时需要重新订阅。

票数 0
EN

Stack Overflow用户

发布于 2018-07-10 08:24:46

这是我使用过的golang代码(受gingi007回答的启发,谢谢!)

代码语言:javascript
运行
复制
var onConn MQTT.OnConnectHandler
onConn = func(client MQTT.Client) {
    fmt.Println("connected")
    client.Subscribe(topic.Config, 1, handlerFunc)
}
mqttOpts.SetOnConnectHandler(onConn)
client := MQTT.NewClient(mqttOpts)

这样,配置更新就会源源不断地流到我的设备上,而如果您在onConnectHandler之外订阅,则在连接时只会收到一个配置更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49774280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档