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

Route publish message between two MQTT broker

我很头疼在两个代理之间路由发布消息的问题,如下图所示。

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

我的意思是:

第 1 步:我将代理 A 设置为代理 B 的桥接代理

第 2 步:用户 A 向代理 A 发布关于主题 # 的消息。这意味着代理 B 将收到消息,用户 A 和用户 C 都将收到此消息。

如果我只想让用户 C 接收消息,在第 2 步中我必须就用户 B 正在订阅的主题发布消息。例如:

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

这是我的麻烦,实际上,Broker 1 代表 Organization 1,Broker 2 代表 Organization 2。

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

请帮助我。

提前谢谢你。

我使用 MQTT 投入的 IOT 系统越多,我看到的这个用例就越多。

您需要的是 MQTT 代理。因此,不是在两个代理之间设置“桥梁”,而是设置一个代理,该代理定义了关于可以传递给另一个代理的内容的规则。因此,如果有人在 Broker #1 上发布到“/home/UserB”,并且没有 'rule' 将其传递给 Broker #2,那就是目前为止。

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

如果 cross-organization 流量不是太大,您可以在容器内执行此操作。

我会 post 一些代码,但我编写的所有 MQTT 代理都是客户 IP。编写代码并不可怕。 ...也许我应该写一个 Public 域版本...