MQTTクライアントは、自分で作成したトピックをサブスクライブできますか?


18

私の理解では、クライアントが対応するトピック名で何かを発行すると、MQTTでトピックが作成されます。

トピックを構成する必要はありません。トピックを公開するだけで十分です。

ここから。

クライアントが自身のトピックをサブスクライブすることは可能ですか?仕様には制限がありませんでした。異常動作の可能性としてリストされていません:

5.4.8異常な動作の検出

サーバー実装では、クライアントの動作を監視して、潜在的なセキュリティインシデントを検出する場合があります。例えば:

  • 接続試行の繰り返し
  • 繰り返し認証試行
  • 接続の異常終了
  • トピックスキャン(多くのトピックの送信またはサブスクライブの試行)
  • 配信不能メッセージの送信(トピックの購読者なし)
  • 接続するがデータを送信しないクライアント

これに基づいて、私はそれが確かに可能であると思います。だから私はこの機能の使用例に興味がありますか?

なぜ標準ではそのようなメカニズムが許可されているのでしょうか?そのため、クライアントが自分のトピックにサブスクライブできるようにするだけです。

私が考えることができる1つのユースケースは、クライアントが公開されたデータを検証できるこの方法です。

回答:


19

はい、自分で作成したトピックにサブスクライブすることは可能です。

MQTTクライアントは、パブリッシャーとサブスクライバーの両方になることができます。MQTTの用語では、クライアントは両方を含んでいるsubscriberspublishers

この機能の使用例に興味がありますか?

考えられるユースケース(私が推測する)は、x-topicによって作成されたトピックにサブスクライブしている3つのクライアント(x、y、z)があるとしxます。にメッセージが公開されるたびに、x-topicそのトピックにサブスクライブしている全員がメッセージを受信します。yトピックにメッセージをパブリッシュする場合x-topic(できると思います)、xトピックを作成したにもかかわらずそのトピックにサブスクライブしない場合、メッセージを受信しません。

そのため、クライアントはトピックの元の作成者であるにもかかわらず、メッセージを受信するためにトピックにサブスクライブする必要があります。

ただし、ブローカーを媒体として使用することにより、メカニズムを制御できます。


はい、このオプションは私の心を越えました。ただ、新しいクライアントが既存のトピックにパブリッシュできるかどうかはわかりませんでした。すでに他のパブリッシャーによって使用されています。
ベンスカウリック16

はい、新しいクライアントは既存のトピックに公開できます。クライアントは直接通信せず、すべての公開とサブスクリプションはブローカーを通じて行われることに注意してください。
bravokeyl

0

はい。

MQTTクライアントは、クラウドまたは他のデバイスであるブローカーに接続されます。

トピックの作成のようなものはありません。メッセージの見出しとして使用されます。クライアントがトピックをサブスクライブし、そのトピックで何かを公開している場合、メッセージはブローカーを介してクライアントに再度受信されます。

優れたブローカーの例は、デバイスで実行するためのMosquittoや、クラウドベースのブローカー用のCloudMqttです。


4
これは、1年前にすでに提供されていた他の回答を超えて知識の本体を実際に拡張するものではありません。回答済みの質問にも新しい回答を追加できます。ただし、これらの回答は、質問または解決策に関する追加のまたは更新された洞察を提供する必要があります。
ヘルマー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.