在两个MQTT代理之间路由发布消息

时间:2020-09-29 16:29:08

标签: mqtt mosquitto

我很难在两个代理之间路由发布消息,如下图所示。

如何在没有有关其主题订阅信息的情况下向用户B发送消息?

我的意思是:

步骤1:我将代理A配置为与代理B的桥接代理

步骤2:用户A在主题#上向代理A发布消息。这意味着代理B将收到消息,而用户A和用户C都将收到此消息。

如果我只希望用户C接收消息,则必须在步骤2中发布有关用户B正在订阅的主题的消息。例如:

用户A在代理1上发布关于主题/home/userB的消息,用户B在代理2上订阅主题/home/userB

这是我的麻烦,实际上,经纪人1代表组织1,经纪人2代表组织2。

组织1下的用户A无法获得有关用户B(在组织2下)订阅的主题的信息。

请帮助我。

先谢谢您。 enter image description here

1 个答案:

答案 0 :(得分:1)

我使用MQTT投入的物联网系统越多,我看到的用例就越多。

您需要的是MQTT代理。因此,无需设置两个代理之间的“桥梁”,而是设置一个代理,该代理已定义了有关可传递给另一个代理的规则。因此,如果有人在经纪人#1上发布到“ / home / UserB”,并且没有“规则”将其传递给经纪人#2,那就尽其所能。

这个想法是您的代理连接到另一个代理,然后等待发布到它。列出了将在其他代理上发布的主题或主题/#的设置。我还设置了翻译以及IE> / home / UserB => / Org1 / status / event来隐藏实际的原始主题。

如果跨组织的流量不是很重,则可以在Container中执行此操作。

我会发布一些代码,但是我编写的所有MQTT代理都是客户IP。它不是很难编写的困难代码。 ...也许我应该写一个Public Domain版本...