ApsaraMQ for MQTT は、Message Queuing Telemetry Transport(MQTT)5.0 のサブスクリプションオプション機能をサポートしています。このトピックでは、サブスクリプションオプション機能について説明します。
機能の説明
トピックサブスクリプションの柔軟な管理を容易にするために、MQTT 5.0 にはサブスクリプションオプションが導入されています。 サブスクリプションオプションを使用すると、メッセージのサービス品質(QoS)と、デバイスが自身によってパブリッシュされたメッセージを受信できるかどうかを指定できます。 これにより、クライアントはメッセージストリームとメッセージ受信をきめ細かく管理できます。
次の表に、MQTT 5.0 でサポートされているサブスクリプションオプションを示します。
サブスクリプションオプション | 説明 |
MQTT でのメッセージの QoS レベルです。 | |
デバイスが自身によってパブリッシュされたメッセージを受信できるかどうかを指定します。 |
QoS レベル
次の表に、QoS レベルを示します。
レベル | 説明 | シナリオ |
QoS 0 | メッセージは最大で 1 回受信できます。 メッセージ配信は信頼性がなく、メッセージが失われる可能性があります。 | センサーデータ送信。 |
QoS 1 | メッセージは少なくとも 1 回受信できます。 メッセージ配信は信頼性があります。 | リモートコントロールコマンド。 |
QoS 2 | メッセージは 1 回だけ受信できます。 | なし。 |
No Local
MQTT 3.1.1 を使用するデバイスが、デバイスがメッセージをパブリッシュするトピックをサブスクライブすると、デバイスは自身によってパブリッシュされたメッセージを受信できます。 デバイスが MQTT 5.0 を使用している場合は、No Local オプションを 1 に設定できます。 これにより、デバイスは自身によってパブリッシュされたメッセージを受信できなくなります。
有効な値:
1: デバイスは自身によってパブリッシュされたメッセージを受信できません。
0: デバイスは自身によってパブリッシュされたメッセージを受信できます。
シナリオ
サービス品質保証: 異なるトピックのメッセージの QoS レベルを指定できます。 これにより、メッセージは特定の要件に基づいて配信できます。
メッセージルーティングの最適化: 特に大規模な分散システムのメッセージのルーティングとスケジューリングを最適化するために、異なるサブスクリプションオプションを指定できます。
リソースの最適化: 帯域幅またはコンピューティングリソースが限られているクライアントのサブスクリプションオプションを変更して、クライアントが受信する不要なメッセージの数を減らすことができます。
例
クライアントは、QoS レベルが、クライアントが特定のトピックから処理できるメッセージの QoS レベル以下の新しく生成されたメッセージのみを受信したいと考えています。
この場合、クライアントの SUBSCRIBE パケットでサブスクリプションオプションを指定して、QoS レベルが 0 のメッセージのみを受信できます。サンプルコード:
SUBSCRIBE
Topic Filter: sensors/temperature
Subscription Options:
QoS: 0
No Local: true
Retain As Published: false
Retain Handling: 0次の項目では、上記の例のサブスクリプションオプションについて説明します。
QoS: 値は 0 に設定されています。これは、ブローカーが QoS レベルが 0 のメッセージのみをクライアントに送信することを示します。
No Local: 値は true に設定されています。これは、クライアントが自身によってパブリッシュされたメッセージを受信できないことを示します。
サブスクリプションオプションを使用すると、ビジネス要件とリソースの制限に基づいて、クライアントのトピックサブスクリプションを管理できます。 これにより、MQTT 5.0 はより柔軟になり、さまざまなシナリオや要件に適応できるようになります。