Mosquitto - 订阅本地桥上的主题

Mosquitto - subscribe to topics on a local bridge

我是 MQTT 新手,所以这可能很明显,但我不明白。

我有将数据发布到云 MQTT 代理的物联网设备。我无法改变这一点。我希望能够从云代理获取消息并将它们传递到 Azure 中的 IoT 中心。这是我到目前为止所做的:

  1. 配置了一个 VM 运行 CentOS 来托管我的 Mosquitto 服务器
  2. 已安装 Mosquitto 并配置为 IoT 中心 (IoTHubBridge) 的网桥
  3. 创建了一个单独的 Mosquitto 配置以桥接到云 MQTT 代理 (CloudBridge)

请注意,两个 Mosquitto 网桥实例 运行 在同一个虚拟机上。

到目前为止,还不错。 IoT Hub 可以接收通过 IoTHubBridge 传递的测试消息,CloudBridge 接收来自云代理的消息。这就是我遇到的问题 - 如何让消息从 CloudBridge 传递到 IoTHubBridge?

谢谢!

如评论中所述。

这里不需要2个MQTT代理。您应该在单个代理中配置两个网桥,这样使用正确的 topic 网桥声明,消息应该只在 IoT 中心和云代理之间流动。

这确实假定云代理的 topic/message 结构与您需要发送到 IoT 中心的内容兼容。该桥将允许您 add/remove 来自主题的前缀,但不能完全重新映射它。并且无法更改有效负载格式。

如果您需要更改有效负载格式或对主题结构进行重大更改,那么网桥不是正确的解决方案。您将需要创建一个订阅云代理的应用程序,然后将转换后的消息重新发布到 IoT 中心代理。有很多方法可以用多种语言实现这一点,但如果您对现有的 language/MQTT 客户端组合还不满意,我可能建议您看看像 Node-RED 这样的东西。