我正在运行 emqttd ( emqtt.io )。我想监视客户端连接和断开与一个单独的进程的连接,该进程将订阅一个系统主题,其中发布了出生和遗嘱消息。这样做的正确方法是什么?
订阅MQTT诞生和将话题?(emqttd)
物联网
MQTT
emq
2021-06-03 00:11:33
2个回答
我想监视客户端连接和断开与一个单独的进程的连接,该进程将订阅一个系统主题,其中发布了出生和遗嘱消息。
emqtt 的用户指南显示了一个系统主题,它提供了一些 Broker 统计信息,即$SYS/brokers/${node}/stats/clients/count
提供当前连接客户端的数量。请注意,这不会列出有关已连接客户端的任何细节 - 所以我认为这不是这里需要的。
最后遗嘱(LWT、最后遗嘱和遗嘱)消息不是系统主题,而是客户端在连接期间设置的常规主题。如果您想监控该主题,只需订阅即可。但是请注意,如果客户端通过发送 DISCONNECT 消息正常断开连接,则 LWT 消息将被丢弃(请参阅hiveMQ 博客,很棒的阅读顺便说一句)。
emqtt 的用户指南提供了一种更好的方法来监控客户端的连接和断开连接:
在
./bin/emqttd_ctl
命令行可以用来查询和管理的EMQ券商(不工作在Windows上)。
我认为监控clients list
- 列出所有 MQTT 客户端 - 并clients show <ClientId>
- 显示 MQTT 客户端 - 在这里最有帮助。因此,用于监控客户端的计划单独过程不需要订阅代理,而是简单地使用./bin/emqttd_ctl
。
$ ./bin/emqttd_ctl clients list Client(mosqsub/43832-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64896, connected_at=1452929113) Client(mosqsub/44011-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64961, connected_at=1452929275)
好吧,不确定出生信息,根据规范,LWT(最后遗嘱和遗嘱)是可选的。因此,除非您根据此类要求定制了代理,否则您不一定会收到消息。