2016-09-26 7 views
0

MQTTプロトコルのコンテキストでは、そのトピックのサブスクライバが存在しないときにクライアントがパブリッシュ・メッセージを送信しないようにする方法はありますか?サブスクライバが存在しない場合のMQTTトラフィックの軽減

つまり、サブスクライバ対応の公開を実行し、ネットワークトラフィックを公開クライアントからブローカに還元する標準的な方法はありますか?

膨大な量のデータを生成できる多くのセンサーがあるアプリケーションでは重要ですが、ほとんどの場合、誰もそのデータすべてに興味はありませんが、小さなサブセットでは、バッテリーを節約したり、渋滞

答えて

2

次回のMQTT v5仕様では、ブローカーは、クライアントがそのトピックにパブリッシュするときにトピックのサブスクライバーがないことをクライアントに示すことができます。これは、QoS 0メッセージが応答をもたらさないため、QoS 1またはQoS 2がパブリッシュする場合にのみ可能です。

+1

これはどのように役立ちますか?公開のポイントでは、購読者はいないかもしれませんが、誰かが次に公開する前に購読者かもしれません。 – hardillb

+0

確かに、このシナリオではあまり役に立ちません。これは、完了する必要がないため、QoS 2フローのトラフィックを削減するのに役立ちます。 – ralight

+0

なぜMQTT * v4 *を使用しないのですか? –

1

いいえ、パブリッシャーは、特定のトピックにどのくらいの数の加入者が存在しているかについては全く考えていません。

これは、情報プロデューサとコンシューマのほぼ完全なデカップリングである、pub/subメッセージングの重要なポイントです。

1

デバイスとアプリケーションを設計して、データを「データトピック」に公開するだけでなく、デバイスのデータ公開を制御する別のデバイス固有の「コマンドトピック」を購読することもできます。アプリケーションが特定のデバイスからのデータに興味を持っている場合は、どのデバイスにどのデータトピックを購読するかを知っている必要があるので、「すぐにデータを公開してください」コマンドを対応するコマンドトピックに公開することができます。

私は、デバイスが関心のないアプリケーションではデータの公開頻度が低く、少なくとも1つのアプリケーションでデータの公開が求められている場合にはより速いソリューションがあるとします。

MQTTについての1つのことは、デバイスとアプリケーションを、単体ではなくシステムとして設計するのが理想的だということです。

関連する問題