このトピックでは、MQTT 5.0 のユーザー プロパティ機能について説明します。
背景情報
MQTT 5.0 パケットは、プロパティ機能をサポートしています。キーと値の形式で追加のプロパティをコントロール パケットに追加できます。セッションの有効期限、メッセージの有効期限、リクエストレスポンス パターンなど、MQTT 5.0 の複数の機能は、ユーザー プロパティ機能に基づいて実装されています。ユーザー プロパティはプロパティの一種であり、HTTP ヘッダーに似ています。キーと値の形式で UTF-8 文字列を含む、完全なカスタム ユーザー プロパティを設定できます。ハートビート パッケージを除くすべての MQTT 5.0 コントロール パケットに対して、ユーザー プロパティを設定できます。デバイスとアプリケーション間で追加のカスタム情報を送信するようにユーザー プロパティを設定できます。例:
Topic: “sys/${productkey}/${devicename}/update”
Payload: "hello world!"
UserProperty: "key1_timestamp:value1_12345" // ユーザー プロパティ: "key1_timestamp:value1_12345"
UserProperty: "key2_msgid:value2_123" // ユーザー プロパティ: "key2_msgid:value2_123"制限
最大 20 個のユーザー プロパティを指定できます。
IoT Platform は、
Connect/Publishパケットのユーザー プロパティのみを処理します。
シナリオ
メッセージ コンテンツ フォーマット
ユーザー プロパティを使用して、ペイロードを記述できます。このようにして、1 つのトピックでさまざまな種類のペイロードをサポートでき、異なるバッチのデバイスを管理できます。

メッセージのセグメント化
MQTT は、小さなパケットが使用されるシナリオに適しています。MQTT 5.0 を使用すると、デバイスは IoT Platform との最大パッケージ長をネゴシエートできます。最大パケット長がビジネス要件を満たせない場合は、ユーザー プロパティを使用してパケットをセグメント化できます。次の図は、デバイス A がメッセージを送信するときに、メッセージがメッセージ A とメッセージ B にセグメント化されることを示しています。ビジネス サーバーは、サブメッセージのユーザー プロパティを読み取ってサブメッセージを識別し、サブメッセージを結合します。詳細については、「サーバー側のサブスクリプション」をご参照ください。

メッセージの転送
ユーザー プロパティを使用して、転送されるメッセージのタイプと宛先を指定できます。このようにして、ルールエンジンはユーザー プロパティを識別してメッセージを転送できます。次の図は、デバイス A が異なる種類のメッセージを送信するときに、UserProperty パラメーターを設定してデータ転送先を指定する方法を示しています。詳細については、「概要」をご参照ください。
