web-dev-qa-db-ja.com

MQTTブローカーのすべてのトピックを購読するにはどうすればよいですか

トピックの名前がわからない場合、ブローカーのすべてのトピックを監視してイベントに応答するクライアントを接続したい。

34

#にサブスクライブすると、$で始まるトピックを除くすべてのサブスクリプションが提供されます(これらは通常とにかく制御トピックです)。

もちろん、最初にサブスクライブしているものを知っておいた方がよいでしょう。また、一部のブローカー構成では、#へのサブスクライブが明示的に禁止されている場合があります。

54
ralight

mosquitto_submosquitto-clientsパッケージの一部)を使用して、ワイルドカードトピック#にサブスクライブできます。

mosquitto_sub -v -h broker_ip -p 1883 -t '#'
43
rem

ワイルドカード「#」を使用しますが、ある時点でバスを通過するデータを何らかの方法で理解する必要があることに注意してください。

具体例

mosquitto.orgは非常に活発です(この投稿の時点)。これは、MQTTサブスクライバーLinuxデバイスのニーススモークテストです。

mosquitto_sub -h test.mosquitto.org -t "#" -v

「#」はトピックのワイルドカードであり、すべてのメッセージ(トピック)を返します。サーバーには大量のトラフィックがあったため、メッセージの「ファイアホース」を返しました。

MQTTデバイスがirisys/V4D-19230005/のトピックをテストMQTTブローカーに公開する場合、メッセージをフィルターできます。

mosquitto_sub -h test.mosquitto.org -t "irisys/V4D-19230005/#" -v

オプション:

  • -hホスト名(デフォルトのMQTTポート= 1883)
  • -tはトピックの前にあります
0
gatorback