このトピックでは、IoT Platform でサポートされている Message Queuing Telemetry Transport (MQTT) 5.0 のサブスクリプションオプションについて説明します。
機能説明
サブスクリプションオプションを設定して、IoT Platform の動作を決定できます。MQTT 5.0 は、次のサブスクリプションオプションをサポートしています。
項目 | 説明 |
このオプションは、MQTT メッセージングのサービス品質 (QoS) レベルを指定します。MQTT 5.0 の QoS レベルは、MQTT 3.1 の QoS レベルと同じです。 | |
このオプションは、デバイスが自身によって公開されたメッセージを受信するかどうかを指定します。 | |
このオプションは、IoT Platform がデバイスにメッセージを公開するときに、メッセージ内の 保持 フラグを保持するかどうかを指定します。 | |
このオプションは、サブスクリプションが確立されたときに、サーバーがデバイスに保持メッセージを送信するかどうかを指定します。 |
Link SDK for C を使用してデバイスと IoT Platform を接続する場合、すべてのサブスクリプションオプションはデフォルトで 0 に設定されます。
[No Local] オプションを 1 に設定して、不要なメッセージ配信を減らすことをお勧めします。
QoS レベル
次の表に、3 つの QoS レベルを示します。
レベル | 説明 | シナリオ |
QoS 0 | メッセージは最大で 1 回受信できます。メッセージ配信は信頼性が低く、メッセージが失われる可能性があります。 | この QoS レベルは、センサーデータの送信に使用されます。 |
QoS 1 | メッセージは少なくとも 1 回受信できます。メッセージ配信は信頼性があります。 | この QoS レベルは、リモートコントロールコマンドの送信に使用されます。 |
QoS 2 | メッセージは 1 回だけ受信できます。 説明 IoT Platform は、この QoS レベルをサポートしていません。 | 該当なし |
No Local
MQTT 3.1.1 では、デバイスがメッセージを公開するトピックにデバイスがサブスクライブしている場合、デバイスは自身によって公開されたメッセージを受信できます。ただし、MQTT 5.0 を使用している場合は、[No Local] オプションを 1 に設定できます。このようにして、デバイスがメッセージを公開するトピックにデバイスがサブスクライブしている場合、デバイスは自身によって公開されたメッセージを受信しません。
有効な値:
1: デバイスは自身によって公開されたメッセージを受信しません。
0: デバイスは自身によって公開されたメッセージを受信します。
デバイスが名前にワイルドカード文字を含むトピックにサブスクライブする場合、このオプションを 1 に設定できます。これにより、サブスクリプションが簡素化され、不要なメッセージが削減されます。次の図は、[No Local] オプションが 1 に設定されている場合のメッセージングプロセスを示しています。

Retain As Publish
IoT Platform がデバイスにメッセージを転送するときに、メッセージ内の [Retain] フラグを保持するかどうかを指定できます。
デバイスを Topic にサブスクライブするように構成する場合、[Retain As Publish] オプションを次のいずれかの値に設定できます。
1: IoT Platform は、ブローカーとして公開する保持メッセージ、または転送する通常のメッセージに [保持] フラグを保持します。
0: IoT Platform が通常のメッセージを転送する場合、IoT Platform はメッセージ内の Retain フラグを保持しません。IoT Platform がブローカーとして機能して保持メッセージをパブリッシュする場合、IoT Platform はメッセージ内の Retain フラグを保持します。
次の表は、デバイスが IoT Platform から受信するメッセージの Retain フラグに、[Retain As Publish] オプションがどのように影響するかを示しています。メッセージが IoT Platform に公開されると、メッセージ内の Retain フラグのステータスは、次のいずれかの値になります。
True: IoT Platform に公開されるメッセージには、Retain フラグが含まれています。 Retain As Publish オプションは、デバイスで受信されるメッセージに Retain フラグが含まれるかどうかを指定します。
False: IoT Platform に公開されるメッセージには、Retain フラグが含まれていません。 Retain As Publish オプションは無効であり、デバイスで受信されるメッセージには、オプションの設定に関係なく Retain フラグは含まれません。
IoT Platform に公開されたメッセージに Retain フラグが含まれているかどうか | メッセージが IoT Platform に公開されたときにサブスクリプションが確立されているかどうか | Retain As Publish オプション | デバイスが受信したメッセージに Retain フラグが含まれているかどうか |
True | サブスクリプションが確立され、IoT Platform はすぐにメッセージを公開します。 | 1 | True |
0 | False | ||
サブスクリプションは確立されておらず、IoT Platform はサブスクリプションが確立された後にのみ保持メッセージを公開します。 | 1 | True | |
0 | True | ||
False | サブスクリプションの状態は影響しません。 | 任意の値 | False |
デバイスが Retain フラグを含むメッセージを受信した場合、次のいずれかの条件が満たされます。
IoT Platform に公開されるメッセージに 保持公開状態を維持1 フラグが含まれており、 オプションが に設定されています。
IoT Platform がブローカーとして機能して保持メッセージを公開し、公開状態を維持0 フラグが に設定されています。
Retain Handling
[Retain Handling] オプションは、サブスクリプションが確立された後に、サーバーがデバイスに保持メッセージを公開するかどうかを指定します。
有効な値:
0: デバイスがトピックにサブスクライブすると、サーバーはトピック内の保持メッセージをデバイスに公開します。
1: デバイスがトピックにサブスクライブしたことがなく、その後トピックにサブスクライブすると、サーバーはトピック内の保持メッセージをデバイスに公開します。デバイスがセッション内で同じトピックで繰り返しサブスクリプションを確立する場合、デバイスは最初のサブスクリプションでのみ保持メッセージを受信します。
2: デバイスがトピックにサブスクライブするかどうかに関係なく、サーバーはトピック内の保持メッセージを公開しません。