回答:
birthとwillメッセージが投稿されるシステムトピックにサブスクライブする別のプロセスから接続および切断するクライアントを監視したいと思います。
emqttのユーザーガイドは、ブローカー統計を$SYS/brokers/${node}/stats/clients/count
提供する、つまり現在接続しているクライアントの数を提供するシステムトピックを示しています。これは接続されたクライアントに関する詳細をリストしないことに注意してください-したがって、ここでは必要ではないことを理解します。
Last will(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)
まあ、出生メッセージについては不明であり、LWT(Last Will and Testament)は仕様に従ってオプションです。したがって、ブローカーにそのような要件に合わせてカスタマイズしてもらわなければ、メッセージを受信する必要はありません。