【问题标题】:Routing MQTT protocol to PM2将 MQTT 协议路由到 PM2
【发布时间】:2019-11-23 07:38:48
【问题描述】:

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

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

【问题讨论】:

    标签: node.js mqtt scalability pm2 mosquitto


    【解决方案1】:

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

    您想查看名为共享订阅的内容。这是 MQTT v5 规范中的新内容(尽管一些代理在 MQTT v3 中实现了一个支持版本)。

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

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

    【讨论】:

    • 谢谢。您是否有任何参考或链接可以了解有关如何配置它的更多信息?
    • 您只需在主题订阅前加上$share/{groupname}/
    • 我有两个客户订阅主题$share/group/data,另一个客户发布一些数据到主题data,买它不起作用!
    • 你用的是什么版本的 mosquitto?
    • 恐怕,我正在使用版本1.4.8。如何安装较新的版本?
    猜你喜欢
    • 2015-07-06
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2017-11-08
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多