ApsaraMQ for MQTT (旧称 MQ for MQTT) は、モバイルインターネットおよび IoT (Internet of Things) アプリケーション向けの軽量なメッセージ指向ミドルウェアです。従来のメッセージ指向ミドルウェアはマイクロサービス間でメッセージを伝送します。一方、ApsaraMQ for MQTT は、デバイスとクラウド間でメッセージを伝送し、大規模な双方向通信を実現します。
ApsaraMQ for MQTT は、以前は MQ for MQTT として知られていました。製品名は変更されましたが、サービスは引き続き継続してメンテナンスされており、すべての機能は引き続き利用可能です。MQ for MQTT のドキュメントをお探しの場合は、このページが該当します。
ApsaraMQ for MQTT がビジネス要件を満たさない場合は、ApsaraMQ for RocketMQ や ApsaraMQ for RabbitMQ など、他の Alibaba Cloud メッセージング製品の評価をご検討ください。
例:
多数の温度センサーが 5 秒ごとに測定値をクラウド分析ダッシュボードに報告します。
バックエンドサービスが、数千台のスマートデバイスに対してファームウェア更新コマンドを同時にプッシュします。
2 つのモバイルアプリが、バックエンドサーバーを経由せずに MQTT プロトコルを通じてインスタントメッセージを交換します。
用語
| 用語 | 定義 |
|---|---|
| トピック | メッセージの主要な分類子です。プロデューサーはトピックにメッセージを送信し、コンシューマーはトピックをサブスクライブしてメッセージを受信します。 |
| プロデューサー | トピックに対してメッセージを作成および送信する発行者です。 |
| コンシューマー | トピックからメッセージを受信および処理するサブスクライバーです。 |
| メッセージ | プロデューサーがトピックに送信し、1 つ以上のコンシューマーに配信されるデータペイロードです。 |
| ルール | ApsaraMQ for MQTT と他の Alibaba Cloud サービス間でデータを交換するリソースです。 |
FAQ: ApsaraMQ for MQTT と EMQX
ApsaraMQ for MQTT と EMQX の違いは何ですか? ApsaraMQ for MQTT は EMQX Dashboard をサポートしていますか?
ApsaraMQ for MQTT は EMQX をベースにしていません。EMQX はオープンソースの MQTT ブローカーであり、お客様は Elastic Compute Service (ECS) インスタンスなどの独自のインフラストラクチャにデプロイして維持管理する必要があります。対照的に、ApsaraMQ for MQTT は Alibaba Cloud が提供するフルマネージド型クラウドサービスです。お客様は [ApsaraMQ for MQTT コンソール] でサービスを有効化し、専用エンドポイントを使用してインスタンスに接続します。管理するインフラストラクチャはありません。
ApsaraMQ for MQTT は、EMQX Dashboard などのサードパーティの管理インターフェイスをサポートしていません。モニタリングおよび管理操作には、[ApsaraMQ for MQTT コンソール] を使用してください。
メッセージングモデル
ApsaraMQ for MQTT は、2 つのメッセージングモデルをサポートしています。
デバイスとクラウド間の通信
デバイスが ApsaraMQ for MQTT に接続し、クラウドアプリケーションまたは他の Alibaba Cloud サービスとデータを交換します。このモデルは、以下のようなシナリオをカバーします:
スマートサーモスタットが、温度、湿度、バッテリーレベルを 10 秒ごとにクラウド監視ダッシュボードに報告します。
バックエンドサービスが、現場のデバイスに対して設定更新または再起動コマンドを送信します。

デバイス間通信
デバイスが ApsaraMQ for MQTT を介して直接相互に通信します。プロデューサーとコンシューマーの両方が MQTT プロトコルで接続します。このモデルは、以下のようなシナリオをカバーします:
ユーザーがインスタントメッセージングアプリを通じて、1 秒未満のメッセージ配信でチャットします。
モバイルアプリが、バックエンドサーバーを経由せずに、スマートホームデバイスを制御します (照明の調整やドアのロックなど)。

開発者の役割
これらのモデルは、2 つの開発者の役割に対応しています:
| 役割 | 範囲 | SDK リファレンス |
|---|---|---|
| デバイス開発者 | IoT デバイスまたはモバイルエンドポイントで動作するクライアント側アプリケーションを構築します。 | SDK のダウンロード |
| クラウド開発者 | デバイスデータを処理またはコマンドを送信するサーバー側アプリケーションを構築します。 | コントロール API 用 SDK の取得 |
メリット
幅広いプロトコルおよびプラットフォームのサポート
ApsaraMQ for MQTT は、MQTT V3.1.1 をサポートする SDK と互換性があり、WebSocket 接続をサポートしています。これにより、ほとんどのモバイル開発プラットフォームおよびプログラミング言語に対応し、既存の MQTT 実装からのシームレスな移行が可能になります。
インスタンスを作成すると、パブリックエンドポイントと内部ネットワークエンドポイントの両方が自動的に生成されます。パブリックエンドポイントは、企業 Wi-Fi やオフィスネットワークを含むパブリックインターネット経由の接続をサポートしており、モバイルデバイスや IoT デバイスが Alibaba Cloud VPC の外部から接続する際に便利です。
ApsaraMQ for MQTT のサービス側アップグレードはアーキテクチャ上の改善であり、MQTT プロトコルバージョンは変更されません。本サービスは引き続き MQTT 3.1.1 をサポートしており、サービス側のアップグレード後にクライアントアプリケーションのプロトコルバージョン設定を更新する必要はありません。
ApsaraMQ for MQTT は標準 MQTT プロトコルと互換性がありますが、一部のサードパーティオープンソースクライアントライブラリは、パラメーター設定の違いにより接続が切断される場合があります。既知の互換性の問題として、Serverless インスタンスに接続する場合の paho-mqtt v2 および Node.js mqtt.js があります。
公式に推奨されている SDK をご使用ください。サードパーティライブラリを使用する場合は、接続の安定性を確保するために、デバイス開発者ガイドの接続パラメーターガイダンスに従って、Keep Alive や Clean Session などの主要な接続パラメーターを調整してください。
大規模なミリ秒レベルのメッセージング
| 指標 | 能力 |
|---|---|
| レイテンシー | ミリ秒以内にメッセージを配信 |
| 接続デバイス数 | 数千万台の同時デバイス接続 |
| 同時メッセージ数 | 数百万件の同時メッセージ |
| スループット | 数兆件のメッセージトランザクション |
| アーキテクチャ | 単一障害点のない分散設計、各コンポーネントの無制限の水平スケールアウト |
デバイスレベルのセキュリティ
| 機能 | 説明 |
|---|---|
| デバイスレベルの権限管理 | デバイス単位で権限を管理します。 |
| 一時トークン | デバイス認証用の短期間有効な認証情報を発行します。 |
| 暗号化された転送 | Transport Layer Security (TLS) V1.2 により、転送中のすべてのデータを保護します。 |
ApsaraMQ for RocketMQ との統合
ApsaraMQ for MQTT と ApsaraMQ for RocketMQ 間でメッセージを交換し、デバイスとクラウドアプリケーション間の信頼性の高い高スループットの双方向通信を実現します。この統合により、軽量なデバイスメッセージングとエンタープライズグレードのメッセージキューイングが連携します。
シナリオ
ApsaraMQ for MQTT は、幅広いモバイルインターネットおよび IoT のユースケースに対応しています:
| シナリオ | 例 |
|---|---|
| モバイルライブストリーミング | コメント、いいね、ギフトなどのリアルタイムのインタラクティブメッセージを、ビデオストリームと並行して数百万人の同時視聴者に配信します。 |
| Internet of Vehicles (IoV) | コネクテッドカーからテレメトリ (速度、燃料レベル、位置情報) を収集し、無線によるアップデートやナビゲーションコマンドをプッシュします。 |
| 決済 | 決済端末と処理バックエンド間で、トランザクション通知およびステータス更新をリアルタイムで送信します。 |
| スマート飲食 | キッチンディスプレイシステム、注文タブレット、および管理プラットフォームを接続し、複数の拠点間でリアルタイムに注文を同期します。 |
| インスタントメッセージング | モバイルまたは Web クライアント間で、1 秒未満のレイテンシーでチャットメッセージを配信します。 |

FAQ: デプロイメント
ApsaraMQ for MQTT はプライベートデプロイメントをサポートしていますか?
いいえ。ApsaraMQ for MQTT はフルマネージドパブリッククラウドサービスであり、プライベート (オンプレミス) デプロイメントはサポートしていません。
InfluxDB などの他の製品と ApsaraMQ for MQTT を統合する必要がある場合は、VPC 内部ネットワーク接続または製品間データルーティングルールを通じて、パブリッククラウド環境で統合を実装してください。
開始方法
ApsaraMQ for MQTT 購入ページで ApsaraMQ for MQTT インスタンスを購入してください。
FAQ: トラブルシューティング
インスタンスのステータスは正常ですが、ドメイン名が解決できません。どうすればよいですか?
ApsaraMQ for MQTT エンドポイントのドメイン名解決は、基盤となる ApsaraMQ for RocketMQ サービスがアクティブ化されているかどうかに依存します。 たとえば支払い遅延から復旧した後など、お客様の MQTT インスタンスのステータスが [実行中] または [アクティブ] と表示されている場合でも、基盤となる ApsaraMQ for RocketMQ サービスが別途アクティブ化されていなければ、エンドポイントのドメイン名は解決できません。
この問題を解決するには:
[ApsaraMQ for MQTT コンソール] にログインします。
ApsaraMQ for RocketMQ が有効化されているかどうかを確認し、必要に応じて手動で有効化を完了します。
ドメイン名の解決が復旧するまで待ってから、接続を試みてください。