连接到 MQTT 服务器时的多个节点

Multiple nodes when connecting to the MQTT Server

我有一个使用 Erlang 的服务器 (A),它连接到一个 MQTT 服务器 (B) 以收听主题中的内容。

它将处理从该主题收到的内容。

在服务器B人太多的情况下,我把服务器A部署到多个节点(集群)时是不是不够用?

比如多台服务器听同一个话题,是不是重复了?

init(_Args) ->
    {ok, C} = emqttc:start_link([{host, "127.0.0.1"},
                                 {client_id, <<"Node">>},
                                 {username, <<"Node">>},
                                 {password, <<"1">>},
                                 {reconnect, 3},
                                 {logger, {console, info}}]),

    %% The pending subscribe
    emqttc:subscribe(C, <<"Node/User">>, 1),
    {ok, #state{mqttc = C, seq = 1}}.

在正常情况下,订阅给定主题的每个客户端都将收到在该主题上发布的所有消息。

从 MQTT v5* 开始,有一种称为共享订阅的东西,这允许一组客户端全部订阅一个主题,并且消息只会传递给其中一个组.这通过在主题前加上 $share/<group-name>/ 来实现。因此,如果组名是 foo 并且主题是 Node/User,则共享订阅主题将是 $share/foo/Node/User.

* 共享订阅成为 MQTT v5 正式规范的一部分,但一些代理之前有专有实现。