x個のデバイスに対して、x個のMQTTトピックを作成する必要がありますか?


9

現在私のプロジェクトでは、コントローラー(クライアント)がセンサーデータをサーバーに送信し、サーバーからフィードバックをいくつかの追加データとともに受信します。通信にはMQTTプロトコルを使用します。クライアントとサーバーの2つの別々のトピックがあります。

例えば:

トピック1-クライアント(サブスクライブ)、サーバー(公開トピック2-クライアント(パブリッシュ)、サーバー(
購読)

しかし、このプロジェクトがより大きなアプリケーションのユースケースである場合、どこかに5000台のデバイスをインストールする必要があるとしましょう。

それでは、クライアントとサーバーの両方に5000の異なるトピックを作成する必要がありますか?またはより少ないトピックでそれを行うことができますか?


1
なぜ多くのトピックを持つことが問題だと思いますか?
hardillb 2018

1
おそらく、ソフトウェアがそれらすべてを管理する必要があるためです。
Mawgはモニカを復活させると2018

1
@hardillbそれは問題ではありません...単に興味があっただけです...しかし、MQTTトピックはサブトピックを持つことができますか?
ron123456 2018

2
もちろん、トピックは階層的であるため、どのようなスキームも考案できます。スパークプラグs3.amazonaws.com/cirrus-link-com/...は、エッジノードの後ろのエッジノードとデバイスごとに話題のカップルを持っています。
ガンビットサポート

回答:


5

クライアントからサーバーへは、クライアントIDをペイロードにパックできます。たとえば、JSONの場合、キーの1つにクライアントID値を含めることができます。

メッセージをブロードキャストせずに、接続されている1つのクライアントに直接送信するために、サーバーからクライアントへの応答にはclient-idを含める必要があります。

同時に、サーバーを「requests / +」のようにサブスクライブすることができ、各クライアントは「request / {client-id-1}」、「request / {client-id-2}」、およびサーバーにパブリッシュします1つだけのサブスクリプションで両方を受け取ります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.