连接到 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 正式规范的一部分,但一些代理之前有专有实现。
我有一个使用 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 正式规范的一部分,但一些代理之前有专有实现。