ApsaraMQ for MQTT をセットアップし、最初のメッセージを送信して、エンドツーエンドの接続性を検証します。このガイドでは、ApsaraMQ for MQTT インスタンスの作成、ストレージインスタンスへのバインド、メッセージのパブリッシュとサブスクライブについて説明します。
このガイドでは、デフォルトの MQTT プロトコルについて説明します。中国新エネルギー車国家標準など、MQTT 以外のプロトコルで ApsaraMQ for MQTT インスタンスにアクセスするには、ApsaraMQ for MQTT Platinum Edition インスタンスを購入する必要があります。Platinum Edition のドキュメントと技術サポートは、専用チャネルを通じて提供されます。
前提条件
開始する前に、以下をご確認ください。
Alibaba Cloud アカウントと AccessKey ペア。詳細については、「AccessKey ペアの取得」をご参照ください。
ApsaraMQ for RocketMQ が有効化されていること。まだ有効化されていない場合は、ApsaraMQ for RocketMQ を有効化してください。
仕組み
ApsaraMQ for MQTT は、IoT およびモバイルインターネットのシナリオでクライアント接続を維持し、メッセージを転送するステートレスゲートウェイです。メッセージデータは永続化されません。すべての ApsaraMQ for MQTT インスタンスは、メッセージストレージを処理する ApsaraMQ for RocketMQ インスタンスにバインドする必要があります。ストレージインスタンスとしてサポートされているのは、ApsaraMQ for RocketMQ インスタンスのみです。
ワークフローの概要:
ApsaraMQ for MQTT インスタンス (ゲートウェイ) の作成
ApsaraMQ for RocketMQ インスタンス (ストレージ) の作成とバインド
Topic とグループ ID の作成
エンドポイントの取得
メッセージのパブリッシュとサブスクライブ
セットアップの検証

メッセージをパブリッシュまたはサブスクライブする前に、すべてのリソースを作成してください。ApsaraMQ for MQTT ブローカーは、存在しないリソースを参照するクライアントからの接続を拒否します。
ステップ 1:ApsaraMQ for MQTT インスタンスの作成
ApsaraMQ for MQTT インスタンスは、クライアント接続を維持し、メッセージを転送するゲートウェイです。
ApsaraMQ for MQTT コンソールにログインします。
上部のナビゲーションバーで、中国 (北京) などのリージョンを選択します。
左側のナビゲーションウィンドウで、インスタンス をクリックします。
インスタンス ページで、インスタンスの作成 をクリックします。
インスタンスタイプを選択し、仕様を設定して、購入を完了します。
ビジネスシナリオに基づいて、TPS (秒間トランザクション数)、接続数、サブスクリプション数を見積もってください。サブスクリプションインスタンスの場合、仕様が小さすぎると速度制限がトリガーされる可能性があります。
購入後、インスタンスは[インスタンス]ページのインスタンスリストに表示されます。
Basic Edition インスタンスはすぐに有効になります。Platinum Edition インスタンスにはデプロイ時間が必要です。利用可能になると通知されます。
各リージョンで作成できる ApsaraMQ for MQTT インスタンスの数には制限があります。具体的な制限については、コンソールのプロンプトをご参照ください。
ステップ 2:ストレージインスタンスの作成とバインド
ApsaraMQ for MQTT インスタンスを作成した後、ストレージ用の ApsaraMQ for RocketMQ インスタンスを作成し、それらをバインドします。
バインドルール
| ルール | 説明 |
|---|---|
| 1回限りのバインド | ApsaraMQ for MQTT インスタンスは一度しかバインドできません。バインドされたストレージインスタンスは変更できません。 |
| 1対1のみ | 各ストレージインスタンスは、1つの ApsaraMQ for MQTT インスタンスにのみバインドできます。 |
| 同じ名前空間タイプ | 両方のインスタンスは同じ名前空間タイプである必要があります。排他的な名前空間のインスタンスは、非排他的な名前空間のインスタンスにバインドできません。 |
| ストレージへの依存関係 | バインドされたストレージインスタンスを削除すると、ApsaraMQ for MQTT インスタンスが利用できなくなる可能性があります。 |
操作手順
左側のナビゲーションウィンドウで、概要 をクリックします。ApsaraMQ for MQTT インスタンスを選択し、設定の構成 をクリックします。
メッセージ永続化設定 ダイアログボックスで、パラメーターを設定します。
すでに ApsaraMQ for RocketMQ インスタンスをお持ちの場合:既存のインスタンスを選択 を選択し、ご利用のインスタンスをクリックしてから 確認 をクリックします。

ApsaraMQ for RocketMQ インスタンスをお持ちでない場合、次のいずれかを選択します。
共有インスタンスの作成:ApsaraMQ for RocketMQ Standard Edition インスタンスを作成します。名前と説明を入力し、OK をクリックします。

Platinum インスタンスの購入:ApsaraMQ for RocketMQ Platinum Edition インスタンスを作成します。Platinum インスタンスの購入 を選択し、今すぐ購入 をクリックします。購入を完了した後、戻って 既存のインスタンスを選択 を選択してバインドします。

ステップ 3:Topic とグループ ID の作成
Topic の作成
親 Topic は、メッセージをパブリッシュおよびサブスクライブするための第1レベルの Topic です。異なるレベルのサブ Topic は、コンソールで作成することなく、コードで直接追加できます。
ApsaraMQ for MQTT インスタンスとその ApsaraMQ for RocketMQ ストレージインスタンス間の1対1のバインドにより、Topic はストレージインスタンス上で作成され、ApsaraMQ for MQTT コンソールにマッピングされます。Topic の操作は、ApsaraMQ for RocketMQ コンソールでも実行できます。
ApsaraMQ for RocketMQ を通じてすでに Topic を作成している場合は、それを直接使用します。そうでない場合は、次の手順に従います。
左側のナビゲーションウィンドウで、メッセージストレージ をクリックします。
Topics ページで、ApsaraMQ for MQTT インスタンスを選択し、Topic の作成 をクリックします。
Topic の作成 ダイアログボックスで、Topic 名を入力し、メッセージタイプを選択し、説明を入力して OK をクリックします。
ApsaraMQ for MQTT クライアントから順序付きメッセージをパブリッシュするには、順序付きメッセージタイプを選択します。ApsaraMQ for MQTT クライアントは、消費シナリオでの強順序メッセージをサポートしていません。
グループ ID の作成
グループ ID は、同じ特徴を持つデバイスのセットを識別します。グループ ID とデバイス ID を合わせてクライアント ID を構成します。詳細については、「用語」をご参照ください。
左側のナビゲーションウィンドウで、グループ をクリックします。
グループ ページで、ApsaraMQ for MQTT インスタンスを選択し、グループ ID の作成 をクリックします。

グループ ID の作成 ダイアログボックスで、グループ ID を入力し、OK をクリックします。
作成後、グループ ID は グループ ページに表示されます。
使用しないグループ ID は速やかに削除してください。
グループ ID は、それを作成したアカウントのみが使用できます。Alibaba Cloud アカウントによって作成されたグループ ID は、そのアカウント配下の Resource Access Management (RAM) ユーザーは使用できません。RAM ユーザーは独自のグループ ID を作成する必要があります。
ステップ 4:エンドポイントの取得
SDK を使用してメッセージをパブリッシュおよびサブスクライブするには、ApsaraMQ for MQTT インスタンスのエンドポイントを指定する必要があります。エンドポイントは、ドメイン名とポートで構成されます。
上部のナビゲーションバーで、インスタンスが配置されているリージョンを選択します。左側のナビゲーションウィンドウで、インスタンス をクリックします。
インスタンス ページで、ApsaraMQ for MQTT インスタンスを選択し、インスタンス情報 タブをクリックします。
エンドポイント情報 セクションで、エンドポイントのドメイン名を確認します。

エンドポイントタイプ
| エンドポイントタイプ | 説明 | 典型的なユースケース |
|---|---|---|
| パブリックエンドポイント | インターネット経由で ApsaraMQ for MQTT にアクセスします | IoT デバイス、モバイルアプリケーション |
| VPC エンドポイント | Virtual Private Cloud (VPC) 内で ApsaraMQ for MQTT にアクセスします | クラウドアプリケーション |
常にドメイン名を使用し、IP アドレスは使用しないでください。IP アドレスは動的に変更されます。ApsaraMQ for MQTT は、以下に起因するエラーについて責任を負いません。
名前解決の更新後に無効になった IP アドレスを使用した場合。
名前解決の更新後に新しい IP アドレスをブロックするファイアウォールポリシー。
サポートされているポート
| プロトコル | ポート | ユースケース |
|---|---|---|
| TCP 上の MQTT | 1883 | 標準的な IoT デバイス接続 |
| SSL | 8883 | 暗号化された IoT デバイス接続 |
| WebSocket | 80 | ブラウザベースのクライアント |
| WebSocket SSL/TLS | 443 | 暗号化されたブラウザベースのクライアント |
| Flash | 843 | レガシーな Flash アプリケーション |
必要に応じて、エンドポイントのポート番号を置き換えてください。
ApsaraMQ for MQTT は一方向 SSL 暗号化を提供します。クライアント側での証明書のアップロードは不要です。サーバー側の証明書はリクエストのハンドシェイク中に自動的に発行され、エンドポイントのドメイン名にバインドされます。カスタム証明書による暗号化はサポートされていません。
ステップ 5:メッセージのパブリッシュとサブスクライブ
SDK の使用
クライアント SDK をダウンロードします。各言語のダウンロードリンクについては、「SDK のダウンロード」をご参照ください。ApsaraMQ for MQTT は標準の MQTT プロトコルをサポートしています。オープンソースのサードパーティ製 MQTT クライアント SDK も問題なく動作します。ご利用の言語がリストにない場合は、MQTT 互換の SDK を検索してください。
デモプロジェクトをダウンロードし、パラメーターの説明を確認します。デモを実行してメッセージをパブリッシュおよびサブスクライブします。ダウンロードリンクについては、「デモプロジェクト」をご参照ください。デモライブラリは一部の主流言語をカバーしており、随時更新されます。ご利用の言語がカバーされていない場合は、Java デモをダウンロードして変更してください。デモは基本的な機能のみを示しています。本番環境ではすべてのパラメーターを変更してください。
コンソールからのクイックテスト
コードを記述せずに Topic の可用性を検証するには、コンソールからテストメッセージをパブリッシュします。
左側のナビゲーションウィンドウで、メッセージストレージ をクリックします。
メッセージストレージ ページの Topics セクションで、対象の Topic を見つけ、操作 列の 送信 をクリックします。

メッセージの送信 ダイアログボックスで、メッセージ属性を設定し、内容を入力して OK をクリックします。コンソールからメッセージ ID を含む通知が返されます。

注意事項
同じリージョン内の同じインスタンス上にある Topic とグループ ID のみが通信できます。たとえば、中国 (北京) リージョンのインスタンス A で Topic が作成された場合、その Topic にアクセスできるのは、中国 (北京) のインスタンス A で作成されたグループ ID を持つクライアントのみです。
次のステップ
SDK リファレンス: 各言語の SDK を使用して ApsaraMQ for MQTT を統合する
用語: サブトピック、QoS レベル、クリーンセッション、およびその他の MQTT の概念
デモプロジェクト:さまざまなプログラミング言語での実用的な例