我们有一些连接到MQTT Broker (mosquitto)的设备,发布一些事件。我们希望通过node应用程序捕获所有这些事件。一个简单的解决方案是创建一个node应用程序作为客户端,它连接到MQTT Broker,侦听每个事件并为它们做特定的工作。但是从可伸缩性的角度来看,如果我们想要扩展我们的node应用,我们必须运行我们的node应用的多个实例,并使用PM2作为负载均衡器。但问题是,当我们创建多个实例时,所有实例都会收到相同的事件,并且对于该特定事件,所有实例都会多次执行与我们拥有的实例数量相同的工作。
如何将所有MQTT事件路由到PM2负载均衡器?
发布于 2019-07-14 17:41:20
你处理这个问题的方式可能是错误的。
您需要查看称为共享订阅的内容。这在MQTT v5规范中是新的(尽管一些代理在MQTT v3上实现了一个和解版本)。
共享订阅通知代理将即将到来的消息分发到客户端集合,只将每条消息传递给组中的1个。
Mosquitto在1.6版本中增加了对共享订阅的支持(但你应该确保你使用的是最新的1.6.x版本)
https://stackoverflow.com/questions/57025553
复制相似问题