このトピックでは、ApsaraMQ for MQTT および Message Queuing Telemetry Transport (MQTT) プロトコルの基本的な概念と用語について説明します。
基本的な概念
インスタンス
インスタンスは、購入した ApsaraMQ for MQTT サービスを表すエンティティです。各 ApsaraMQ for MQTT インスタンスには、グローバルに一意のエンドポイント URL があります。ApsaraMQ for MQTT を使用する前に、ターゲットリージョンにインスタンスを作成し、そのエンドポイントを使用してサービスにアクセスする必要があります。ApsaraMQ for MQTT インスタンスの作成手順については、「ApsaraMQ for MQTT の使用開始」をご参照ください。
メッセージ ID
メッセージのグローバルに一意な識別子です。ApsaraMQ for MQTT システムは、各メッセージを一意に識別するためにメッセージ ID を自動的に生成します。メッセージ ID を使用して、メッセージをトレースし、問題をトラブルシューティングできます。詳細については、「メッセージトレースのクエリ」をご参照ください。
MQTT用ApsaraMQ ブローカー
ApsaraMQ for MQTT が MQTT プロトコルに基づく対話のために提供するサーバーノードです。これは、ApsaraMQ for MQTT クライアントおよび ApsaraMQ for RocketMQ との間でメッセージを送受信するために使用されます。
MQTT用ApsaraMQ クライアント
ApsaraMQ for MQTT ブローカーと対話するモバイルノードは、ApsaraMQ for MQTT クライアントと呼ばれます。
P2P メッセージ
ApsaraMQ for MQTT が標準の MQTT プロトコルに基づいて提供する特殊なタイプのメッセージです。このタイプのメッセージは、一致するサブスクリプションを必要とせずに、特定の ApsaraMQ for MQTT クライアントに直接送信できます。詳細については、「P2P メッセージング (MQTT)」をご参照ください。
親 Topic
MQTT プロトコルは、パブリッシュ/サブスクライブ (pub/sub) モデルに基づいています。したがって、すべてのメッセージは Topic に属します。MQTT プロトコルは複数の Topic レベルをサポートしています。レベル 1 の Topic は親 Topic です。ApsaraMQ for MQTT を使用する前に、ApsaraMQ for MQTT コンソールで親 Topic を作成する必要があります。
サブ Topic
レベル 2 およびレベル 3 の Topic は、親 Topic のサブ Topic です。コンソールでサブ Topic を作成する必要はありません。コードで直接指定できます。命名フォーマットは <親 Topic 名>/<レベル 2 Topic 名>/<レベル 3 Topic 名> です。親 Topic とそのサブ Topic はスラッシュ (/) で区切られます。たとえば、SendMessage/demo/producer です。ApsaraMQ for MQTT では、親 Topic とそのサブ Topic の合計長が 64 文字を超えることはできないことに注意してください。長さがこの制限を超えると、クライアント例外が発生します。
クライアント ID
ApsaraMQ for MQTT 内でクライアントをグローバルかつ一意に識別する識別子です。別のクライアントが既に使用しているクライアント ID を使用して ApsaraMQ for MQTT サービスにアクセスしようとすると、そのアクセスリクエストは拒否されます。
クライアント ID は、グループ ID とデバイス ID で構成されます。クライアント ID のフォーマットは <GroupID>@@@<DeviceID> です。クライアント ID は、長さが 64 文字を超えることや、印刷不可能な文字を含むことはできません。詳細については、「制限」をご参照ください。
グループ ID
同じロジックと特徴を持つノードのグループの識別子です。グループ ID は、同じ特徴を持つデバイスのクラスを表します。ApsaraMQ for MQTT コンソールでグループ ID を作成する必要があります。詳細については、「ApsaraMQ for MQTT の使用開始」をご参照ください。
デバイス ID
各デバイスに指定する一意の識別子です。デバイス ID はグローバルに一意である必要があります。たとえば、センサーのシリアル番号をデバイス ID として使用できます。
ルール
ApsaraMQ for MQTT が他の Alibaba Cloud プロダクトとデータを交換するために使用するリソースです。ルールは次の 3 つのタイプに分類されます。
データインバウンドルール: 設定された Alibaba Cloud プロダクトからデータを読み取り、MQTT プロトコルを介して ApsaraMQ for MQTT クライアントにデータをプッシュします。これにより、Alibaba Cloud プロダクトの API を直接呼び出して、ApsaraMQ for MQTT クライアントにデータを送信できます。詳細については、「他のクラウドプロダクトからのデータインバウンド」をご参照ください。
データアウトバウンドルール: ApsaraMQ for MQTT クライアントから送信されたメッセージを、設定された別の Alibaba Cloud プロダクトにエクスポートします。これにより、クラウドプロダクトの API を直接呼び出して、ApsaraMQ for MQTT クライアントから送信されたメッセージを読み取ることができます。詳細については、「他のクラウドプロダクトへのデータアウトバウンド」をご参照ください。
クライアントのオンライン/オフライン通知ルール: ApsaraMQ for MQTT クライアントのオンラインおよびオフラインのイベントデータを別の Alibaba Cloud プロダクトにエクスポートします。詳細については、「ApsaraMQ for MQTT クライアントのオンラインおよびオフラインイベントのデータアウトバウンド」をご参照ください。
ネットワーク
エンドポイント
ApsaraMQ for MQTT は、パブリックエンドポイントと内部エンドポイントを提供します。モバイル端末にはパブリックエンドポイントを使用することをお勧めします。ポート 1883 の標準プロトコルに加えて、ApsaraMQ for MQTT は Secure Sockets Layer (SSL) 暗号化や WebSocket などのメソッドもサポートしています。インスタンスを作成すると、エンドポイント URL が自動的に割り当てられます。URL は安全に保管してください。詳細については、「ApsaraMQ for MQTT の使用開始」をご参照ください。
プロトコル
MQTT
モノのインターネット (IoT) およびモバイルインターネット分野の業界標準プロトコルです。このプロトコルは、モバイル端末間のデータ伝送に適しています。ApsaraMQ for MQTT は、デフォルトでこのプロトコルをサポートしています。
QoS
Quality of Service (QoS) は、メッセージ伝送のサービス品質です。メッセージの送信者とメッセージのコンシューマーで QoS レベルを設定できます。
送信者側の QoS 設定: 送信者から ApsaraMQ for MQTT に送信されるメッセージの伝送品質に影響します。
コンシューマー側の QoS 設定: ApsaraMQ for MQTT サーバーからコンシューマーに配信されるメッセージの伝送品質に影響します。
QoS には次のレベルが含まれます。
QoS 0: 最大 1 回の配信。
QoS 1: 最小 1 回の配信。
QoS 2: 正確に 1 回の配信。
cleanSession
MQTT プロトコルの cleanSession フラグは、TCP 接続が確立された後、コンシューマークライアントが以前の状態を保持するかどうかを定義します。この設定は、メッセージ送信者の設定とは独立しています。セマンティクスは次のとおりです。
cleanSession=true: コンシューマークライアントが再びオンラインになると、以前のサブスクリプション関係やオフラインメッセージは保持されません。
cleanSession=false: コンシューマークライアントが再びオンラインになると、以前のサブスクリプション関係を保持し、以前のオフラインメッセージを処理する必要があります。
QoS と cleanSession を一緒に使用する場合は、次の点に注意してください。
MQTT では、各クライアントの cleanSession フラグは各接続で固定され、動的に変更することはできません。そうしないと、オフラインメッセージが誤って判断される可能性があります。
MQTT は、QoS 2 メッセージの非 cleanSession をサポートしていません。クライアントが QoS 2 のメッセージをサブスクライブする場合、cleanSession=false 設定は有効になりません。
P2P メッセージの cleanSession 設定は、受信側クライアントの構成によって決まります。
QoS と cleanSession の構成は、クライアント側の SDK でのみサポートされており、サーバー側の SDK ではサポートされていません。
コンシューマー側の QoS と cleanSession のさまざまな組み合わせの結果を、次の表に示します。
表 1. QoS と cleanSession の組み合わせ
QoSレベル | cleanSession=true | cleanSession=false |
QoS 0 | オフラインメッセージはありません。オンラインメッセージのプッシュ試行は 1 回のみです。 | オフラインメッセージが利用可能です。オンラインメッセージのプッシュ試行は 1 回のみです。 |
QoS 1 | オフラインメッセージはありません。オンラインメッセージの配信が保証されます。 | オフラインメッセージが利用可能です。すべてのメッセージの配信が保証されます。 |
QoS 2 | オフラインメッセージはありません。オンラインメッセージは 1 回だけ配信および受信されることが保証されます。 | サポートされていません。 |
ソリューション
RTC
リアルタイムコミュニケーション。主に音声およびビデオに使用されるネットワーク通信メソッドです。一般的なアプリケーションシナリオには、音声通話、ビデオ通話、ビデオ会議などがあります。
RTCサーバー
Alibaba Cloud Real-Time Communication (RTC) が提供するオーディオおよびビデオメディアチャンネルサービスです。
オーディオ/ビデオサービス管理サーバー
リアルタイムコミュニケーションシステムの管理ノードで、オーディオ/ビデオ管理サービスとも呼ばれます。すべての RTC セッションのライフサイクルをコントロールするために、独自のオーディオ/ビデオ管理サービスを構築する必要があります。この管理ノードは通常、基本的な Alibaba Cloud プロダクトを使用してクラウドにデプロイされます。
モバイルオーディオ/ビデオアプリケーション
リアルタイムコミュニケーションシステムでエンドユーザーが使用する端末アプリケーションで、端末アプリとも呼ばれます。エンドユーザーはこのアプリを使用して、音声通話またはビデオ通話を開始または参加します。
スマート AP
アプリケーションプログラミングをサポートするスマート ルーターなどの一般的なネットワークデバイスです。インターネットアクセスとローカルエリアネットワーク (LAN) デバイスコントロールの両方を処理できます。
電子値札
ショッピングモールやスーパーマーケットなどの場所に分散された電子ディスプレイスクリーンです。通常、Bluetooth や ZigBee などのワイヤレスセンサーネットワークプロトコルを使用して、スマートアクセスポイント (AP) ノードとネットワーク接続されます。
電子値札管理サービス
電子値札システムのバックエンドサービスで、電子スクリーンに表示されるコンテンツを管理します。主に価格変更などの手動タスクの管理とクエリを担当します。
RDS
Alibaba Cloud が提供する、安定性、信頼性、拡張性に優れたオンラインデータベースサービスです。電子値札システムでは、価格変更などのタスクのステータス変更の永続化に使用されます。
Log Service
Alibaba Cloud が提供するログストレージサービスです。電子値札システムでは、監査とトレーサビリティのためにすべての操作ログを永続的に保存するために使用されます。