この記事では、ApsaraMQ for RocketMQ SDK と ApsaraMQ for MQTT が提供するメッセージ構造と属性フィールド間のマッピングについて説明します。これらの 2 つの製品について理解を深め、活用するために役立ちます。
ApsaraMQ for MQTT は、モバイル端末向けのゲートウェイ製品です。実際のメッセージの送受信では、ApsaraMQ for RocketMQ などの他のストレージ製品と組み合わせて使用する必要があります。これは、メッセージストレージに使用されます。
ApsaraMQ for MQTT を単独で使用する場合、この記事で提供されているマッピング関係に注意を払う必要はありません。標準 MQTT プロトコル仕様に従ってください。
ApsaraMQ for MQTT の詳細については、「ApsaraMQ for MQTT とは」および「用語集」をご参照ください。
メッセージ構造マッピング
ApsaraMQ for MQTT と ApsaraMQ for RocketMQ は、どちらもパブリッシュ/サブスクライブモデルに基づくメッセージシステムであり、類似した概念を持っています。次の図は、メッセージシステムとパブリッシュ/サブスクライブモデル間の主要な概念とマッピングの違いを示しています。

前の図に示すように、ApsaraMQ for MQTT のトピックは複数レベルの構造ですが、ApsaraMQ for RocketMQ のトピックはレベル 1 のみです。したがって、ApsaraMQ for MQTT はレベル 1 のトピックを ApsaraMQ for RocketMQ にマッピングし、レベル 2 とレベル 3 のトピックは ApsaraMQ for RocketMQ のメッセージのプロパティにマッピングします。
ApsaraMQ for RocketMQ プロトコルのメッセージにはカスタムプロパティを含めることができますが、MQTT プロトコルの現在のバージョンではプロパティはサポートされていません。ただし、MQTT プロトコルのヘッダー情報とデバイス情報を追跡しやすくするために、ApsaraMQ for MQTT の一部の情報は ApsaraMQ for RocketMQ にマッピングされ、ApsaraMQ for RocketMQ SDK を使用しやすくなっています。
ApsaraMQ for RocketMQ と ApsaraMQ for MQTT は、サービスメッセージのデータシリアル化結果です。 ApsaraMQ for RocketMQ と ApsaraMQ for MQTT は、サービスメッセージに対してそれ以上のエンコードとデコードを実行しません。
プロパティマッピング
現在、ApsaraMQ for MQTT と ApsaraMQ for RocketMQ でサポートされているプロパティフィールドのマッピング関係を次の表に示します。 ApsaraMQ for RocketMQ と ApsaraMQ for MQTT を使用すると、SDK でアプリケーションとやり取りする際に、これらのプロパティを読み書きすることで情報を設定または取得できます。
QoS、cleanSession、トピック、クライアント ID の詳細については、「用語集」をご参照ください。
| プロパティキー | 有効な値 | 説明 |
| qoslevel | 0、1、2 | ApsaraMQ for RocketMQ から ApsaraMQ for MQTT へ送信する場合、メッセージの送信時にこのプロパティを設定できます。設定しない場合、デフォルト値 1 が使用されます。 ApsaraMQ for MQTT から ApsaraMQ for RocketMQ へ送信する場合、直接読み取ることができます。 |
| cleansessionflag | true および false | ApsaraMQ for RocketMQ から ApsaraMQ for MQTT へ送信する場合、クライアントが P2P メッセージをサブスクライブするときにこのパラメーターが設定されます。設定しない場合、デフォルト値「true」が使用されます。 他のメッセージに対してはこのパラメーターを設定できません。 ApsaraMQ for MQTT から ApsaraMQ for RocketMQ へ送信する場合、直接読み取ることができます。 |
| mqttSecondTopic | 特定のサブトピックを示す文字列 | ApsaraMQ for RocketMQ から ApsaraMQ for MQTT へ送信する場合、サブトピックに基づいてメッセージをフィルタリングするには、このパラメーターを設定します。このパラメーターを設定しない場合、デフォルト値 null が使用されます。 ApsaraMQ for MQTT から ApsaraMQ for RocketMQ へ送信する場合、直接読み取ることができます。 |
| mqttRealTopic | サービスがメッセージ受信クライアントに表示することを期待するサブレベル文字列 | ApsaraMQ for RocketMQ から ApsaraMQ for MQTT へ送信する場合、クライアントメッセージに対してこのパラメーターを設定できます。このパラメーターは通常、P2P メッセージに使用されます。このパラメーターを設定しない場合、P2P メッセージはデフォルトで固定のトピック名を使用します。 ApsaraMQ for MQTT から ApsaraMQ for RocketMQ へ送信する場合、この属性はメッセージ内には見つかりません。 |
| clientId | 特定のクライアント ID を示す文字列 | 設定不可。 ApsaraMQ for MQTT から ApsaraMQ for RocketMQ へ送信する場合、メッセージ送信者のクライアント ID を追跡するために使用されます。 |