EMQX 周期性发布自身运行状态、消息统计、客户端上下线事件到以 $SYS/ 开头系统主题。
客户端上下线事件
$SYS 主题前缀:$SYS/brokers/${node}/clients/
- ${node} 指该事件所在的节点名称,如emqx@127.0.0.1
主题(topic) | 描述 |
---|---|
${clientid}/connected | 上线事件,当任意客户端上线时,EMQX 就会发布该主题的消息 |
${clientid}/disconnected | 下线事件,当任意客户端下线时,EMQX 就会发布该主题的消息 |
EMQX 默认只允许本机的 MQTT 客户端订阅 $SYS 主题.可以使用下面任意一种方法:
- 需要修改acl.conf文件。
%% 允许用户名是 dashboard 的客户端订阅 "$SYS/#" 这个主题
{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.
%% 允许来自127.0.0.1 的用户发布和订阅 "$SYS/#" 以及 "#"
{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.
%% 拒绝其他所有用户订阅 "$SYS/#" 和 "#" 主题
{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.
%% 前面的规则都没有匹配到的话,允许所有操作
{allow, all}.
规则的匹配遵循自顶向下的顺序。当一个规则匹配到当前客户端时,规则允许或拒绝的动作就会生效,后面的规则不再继续检查。
在 acl.conf 修改完成后,并不会自动加载至 EMQX 系统。需要手动执行:
./bin/emqx_ctl modules reload emqx_mod_acl_internal
- 使用emqx dashboard
在参数设置里进行更改,修改后点击确定即可
在mqttx中添加订阅