开启Mosquitto系统topic功能

2020/07 17 14:07

mosquitto的系统topic主要是以$SYS开头的topic,这些topic只能mosquitto自己发送,客户端只能订阅,无法发送;mosquitto的系统topic主要用于mosquitto对外发布一些自身状态的消息,例如当前客户端连接数量等等,如下所示:

当前mosquitto维持的客户端数量:$SYS/broker/clients/total

当前mosquitto维护的活跃的客户端数量:$SYS/broker/clients/inactive

等等;

这些系统topic对于我们探查正在运行中的mosquitto的内部状态非常有用,但是mosquitto默认不开启这些topic;如果要开启这些系统topic的消息发布功能,需要如下两步操作:

(1)修改mosquitto的编译配置文件:config.mk,打开如下配置项(去掉该配置项前面的注释符号#):

WITH_SYS_TREE:=yes

然后重新编译mosquitto即可。

(2)修改mosquitto的配置文件mosquitto.conf里的配置项:sys_interval,该项表示系统消息的发布时间间隔(单位:秒),需将该值设置为大于0,否则视为禁用;【在启动mosquito的时候需要显示制定这里修改过的配置文件:mosquitto.conf,例如使用启动命令:./mosquitto -c mosquitto.conf,否则如果不指定任何配置文件,例如使用启动命令:./mosquitto,就会使用默认配置项,即:禁用该功能】

sys_interval 180

注意:并不是所有系统topic的消息都是定时发布,某些topic如果消息没有变化,是不会更新的,例如:

$SYS/broker/clients/total

$SYS/broker/clients/maximum

$SYS/broker/clients/inactive

$SYS/broker/clients/active

$SYS/broker/clients/expired

还有一些系统topic是定时更新,例如:

$SYS/broker/load/messages/received/1min

$SYS/broker/load/messages/sent/1min

$SYS/broker/load/publish/dropped/1min

$SYS/broker/load/publish/received/1min

等等。

但是上述系统topic的消息都开启了retain功能,mosquitto发布的这些消息中,最近的一条消息都会被保存起来,客户端一上线就会立即受到上次mosquittopub的消息。

--转载请注明: http://91o.cc/%e5%bc%80%e5%90%afmosquitto%e7%b3%bb%e7%bb%9ftopic%e5%8a%9f%e8%83%bd/