将 MQTT 协议路由到 PM2

Routing MQTT protocol to PM2

我们将某种设备连接到 MQTT Broker (mosquitto),发布一些事件。我们希望通过 node 应用程序捕获所有这些事件。一个简单的解决方案是创建一个 node 应用程序作为连接到 MQTT Broker 的客户端并监听每个事件并为它们做特定的工作。但是从可扩展性的角度来看,如果我们想要扩展我们的 node 应用程序,我们必须 运行 我们的 node 应用程序的多个实例并使用 PM2 作为负载均衡器.但问题是,当我们创建多个实例时,所有实例都会接收到相同的事件,并且对于该特定事件,所有实例都会根据我们拥有的实例数多次执行相同的工作。

我们如何将所有 MQTT 事件路由到 PM2 负载均衡器?

您可能以错误的方式解决问题。

您想查看一个叫做“共享订阅”的东西。这是 MQTT v5 规范中的新内容(尽管一些代理在 MQTT v3 中实现了一个有利的版本)。

共享订阅告诉代理将即将到来的消息分发给客户集合,只将每条消息传递给组中的 1 个。

Mosquitto 在 1.6 版中添加了对共享订阅的支持(但您应该确保您使用的是最新的 1.6.x 版本)