MQTTの誕生とトピックのサブスクリプションに登録しますか?(emqttd)


11

私はemqttd(emqtt.io)を実行しています。birthとwillメッセージが投稿されるシステムトピックにサブスクライブする別のプロセスから接続および切断するクライアントを監視したいと思います。それを行う正しい方法は何ですか?


3
IoT SEへようこそ。セットアップについてもう少し詳しく説明してもらえますか?どのようなマシンでどのバージョンのemqttdを実行していますか?
ヘルマー

回答:


5

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)

非常に便利。お時間をいただきありがとうございます。emqttd_ctlは部分的なソリューションを提供する可能性がありますが、pubsubを自由に使用できるので、そのメカニズムを使用してアラートを作成できることを期待していました。これは、クライアントに生年月日と意志のメッセージを公開するよう要求することで、私がまだ実施できるものだと思います。
Fabien Papleux 2017年

1

まあ、出生メッセージについては不明であり、LWT(Last Will and Testament)は仕様に従ってオプションです。したがって、ブローカーにそのような要件に合わせてカスタマイズしてもらわなければ、メッセージを受信する必要はありません。


LWTは、切断されたクライアントに代わって機能するブローカーです。これを実装することは、ブローカーにとってオプションではありません。クライアントが最後の意志のトピックを設定することは単にオプションです。
ガニマ2017年

それが私が意味したことです。クライアントは、接続パケットの一部として送信しない場合があります。
cogitoergosum 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.