繁体   English   中英

自桥接 Mosquitto MQTT 代理

[英]Self bridging Mosquitto MQTT broker

我正在尝试自桥接蚊子经纪人。 让我解释一下我这样做的场景。

我们的应用程序有 2 个部分。 一个与处理数据有关,另一个是从 PLC 设备读取数据的 modbus 服务。 应用程序的处理部分能够处理多个客户端。 我想为同一个客户端设置测试和生产租户。 这背后的原因是,这将使我们的客户可以自由地与测试租户一起玩,因为生产不会受到此影响。

测试客户端从代理发送和接收数据。 重要的是我们不要将测试租户的数据发送到我们的 modbus 服务。 主题遵循以下格式。

company/service/test/+用于测试客户端, company/service/prod/+用于 prod 客户端。

modbus 服务以company/service/prod/+格式将数据发送到同一个代理。

有没有办法让我将此主题重新映射到company/service/test/+以便 test 和 prod 客户端都可以从代理接收数据。

address 127.0.0.1:41888
topic /company/values/prod/+ in 2   
topic /company/values/prod/+ out 2 "" /company/values/test/+
remote_clientid test
remote_username mqttuser
remote_password broker-123

请记住,我有一个单一的代理实例,并且我正在尝试对此进行自我桥接。

在我上面的配置中,重新映射不会发生,因为它不是一个有效的前缀。

有人可以帮我弄清楚如何解决这个问题吗?

问题是输出主题映射末尾的+

topic /company/values/prod/+ out 2 "" /company/values/test/+

你要

topic + out 2 /company/values/prod/ /company/values/test/

这将剥离/company/values/prod/并将其替换为/company/values/test/

您还想删除第一个主题行( topic /company/values/prod/+ in 2 ),因为这将导致发布到/company/values/prod/+任何消息的无限发布循环

ps 使用前导/开始主题,而在规范中有效是一个非常糟糕的主意,因为当您开始需要共享订阅并在每个主题的开头注入一个不需要的空值时,它会破坏事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM