订阅MQTT的诞生以及主题?(emqttd)


11

我正在运行emqttd(emqtt.io)。我想监视客户端从一个单独的进程连接和断开的过程,该进程将订阅一个发布出生和遗嘱消息的系统主题。什么是正确的方法?


3
欢迎使用IoT SE。您能否详细说明一下设置?您在哪种版本的哪个版本上运行emqttd?
Helmar

Answers:


5

我想监视客户端从一个单独的进程连接和断开的过程,该进程将订阅一个发布出生和遗嘱消息的系统主题。

emqtt的《用户指南》显示了一个系统主题,该主题提供了一些代理统计信息,即$SYS/brokers/${node}/stats/clients/count提供了当前已连接客户端的数量。请注意,这不会列出有关已连接客户端的任何详细信息-因此,我认为这不是这里所需要的。

遗嘱(LWT,Last Will和Testament)消息不是系统主题,而是客户端在连接期间设置的常规主题。如果您想监视该主题,只需订阅它。但是请注意,如果客户端通过发送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)

很有用。感谢您抽出宝贵的时间。emqttd_ctl可能提供了部分解决方案,但是,由于我们拥有pubsub,我希望您可以使用该机制来创建警报。我想这仍然可以通过要求客户发布出生和遗嘱消息来强制执行。
法比恩·帕普鲁

1

好吧,不确定出生信息,根据规范LWT(《遗嘱》)是可选的。因此,除非您已将经纪人定制为满足此类要求,否则您不一定会收到消息。


LWT是代表断开连接的客户端的代理。对于经纪人而言,实施该过程不是可选的。客户设置遗嘱主题只是可选的。
加纳玛

这就是我的意思。客户端可能不会将其作为连接数据包的一部分发送。
cogitoergosum
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.