我有一个使用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}}.
答案 0 :(得分:0)
在通常情况下,每个订阅给定主题的客户端都会收到有关该主题的所有消息。
从MQTT v5 * 开始,有一种称为“共享订阅”的东西,这允许一组客户端全部订阅一个主题,并且消息将仅传递到该组中的一个。这可以通过在主题前面加上$share/<group-name>/
来实现。因此,如果组名称为foo
并且主题为Node/User
,则共享订阅主题将为$share/foo/Node/User
。
* 共享订阅成为MQTT v5正式规范的一部分,但是某些代理以前拥有专有实现。