我正在尝试帮助客户将其Mosquitto桥连接到Azure IoT Edge。他们有一些说MQTT的旧设备,但是因为它不能执行TLS并且无法更改主题,所以我们尝试通过Mosquitto MQTT Broker运行消息,然后通过Mosquitto桥运行到IoT Edge。
从桥接器到IoT Edge的实际连接没有问题,并且有消息流向桥接器。该连接正常。问题出在主题上。我真的无法更改客户端发布的主题结构。但是,IoT Edge要求在特定的MQTT主题(设备//消息/事件)上发布消息。 device_id是我的经纪人的名字,我们说“ mymqttbroker”只是为了好玩。
因此,我要做的是获取几乎所有主题中的某些消息,然后通过device / mymqttbroker / messages / events主题上的桥将这些消息重新发送到IoT Edge。
我知道网桥配置中的主题行具有remote_prefix和local_prefix参数,但这不会减少它。每一篇this文章都说您不能这样做。
“例如,代理将收到发送到主题sensor1的消息并将其重新映射到new_sensor1。目前,这种形式的重新映射不可用,”
任何想法如何做这样的事情?可能吗?本质上,网桥中是否可以接受来自任何主题的消息,然后将其重新发布到特定的固定主题上?
答案 0 :(得分:1)
一种快速而肮脏的方法是编写一个小助手应用程序,该应用程序可以订阅旧主题并重新发布到新主题,然后只需桥接新主题即可。
它确实增加了另一个故障点,但这是蚊子的唯一选择。
如果您不愿意嫁给mosquitto,则可以使用链接mosca的链接构建自己的自定义代理,并将重新映射添加到代理中。