次の方法で共有


Azure Event Grid の MQTT ブローカー機能の概要

Azure Event Grid を使用すると、メッセージ キュー テレメトリ トランスポート (MQTT) クライアントが相互に通信し、Azure サービスと通信してモノのインターネット (IoT) ソリューションをサポートできます。 Event Grid MQTT ブローカー機能を使用して、次のシナリオを実現できます。 これらのシナリオを示すコード サンプルについては、 このリポジトリを参照してください。

  • 多対一メッセージング パターンを使用してテレメトリを取り込みます。 このパターンにより、アプリケーションは、デバイスとの多数の接続を管理する負荷を Event Grid にオフロードできます。
  • 要求応答 (1 対 1) メッセージング パターンを使用して MQTT クライアントを制御します。 このパターンにより、クライアントは、クライアントの役割に関係なく、制限なしで他のクライアントと通信できます。
  • 一対多メッセージング パターンを使用して、クライアントのフリートにアラートをブロードキャストします。 このパターンにより、アプリケーションは、メッセージを 1 つだけ発行できます。これは、サービスによって対象のすべてのクライアントにレプリケートされます。
  • HTTP プッシュ配信機能を使用して MQTT メッセージを Azure サービスと Webhook にルーティングすることで、MQTT クライアントからのデータを統合します。 この Azure サービスとの統合を使用して、IoT デバイスからのデータ インジェストから始まるデータ パイプラインを構築できます。

MQTT ブローカーは、自動車、モビリティ、製造のシナリオの実装などに最適です。 Azure メッセージングおよびデータ分析サービスを使用して何百万もの MQTT クライアントをクラウドに接続するためのセキュリティで保護されたスケーラブルなソリューションを構築する方法については、 自動車 および 製造 のリファレンス アーキテクチャを参照してください。

パブリッシャーおよびサブスクライバー クライアントとの双方向 MQTT 通信を示す Event Grid の概要図。

重要な概念

Event Grid MQTT ブローカー機能には、次の主要な概念が関係しています。

MQTT

MQTT は、制約のある環境向けに設計された発行/サブスクライブ メッセージング トランスポート プロトコルです。 これは、効率、スケーラビリティ、信頼性のために、IoT シナリオで一般的な通信標準です。 MQTT ブローカーを使用すると、クライアントは WebSocket 経由で MQTT v3.1.1、MQTT v3.1.1、WebSocket 経由で MQTT v5、MQTT v5 経由でメッセージをパブリッシュおよびサブスクライブできます。 次の一覧は、MQTT ブローカーの機能のハイライトの一部を示しています。

  • MQTT v5 の機能:

    • 最後の意志と遺言: MQTT クライアントに、他の MQTT クライアントの突然の切断を通知します。 この機能を使うと、予期しない切断の際に MQTT クライアント間の予測可能で信頼性の高い通信フローを実現できます。
    • ユーザー プロパティ: メッセージ ヘッダーにカスタム キーと値のペアを追加して、メッセージに関するより多くのコンテキストを提供できます。 たとえば、受信者がメッセージを効率的に処理できるように、メッセージの目的または配信元を含めます。
    • 要求/応答パターン: クライアントが以前の構成なしで応答するように要求の応答トピックと関連付け ID を指定して、標準の要求応答非同期パターンを利用できるようにします。
    • メッセージの期限切れ間隔: 関係がなくなったメッセージまたは有効なメッセージを無視するタイミングを MQTT ブローカーに宣言できます。 たとえば、古いコマンドやアラートの無視などがあります。
    • トピック エイリアス: クライアントがトピック フィールドのサイズを小さくするのに役立ちます。これにより、データ転送のコストが削減されます。
    • 最大メッセージ サイズ: クライアントがサーバーから処理できる最大メッセージ サイズを制御できます。
    • 最大受信: 処理速度やストレージ機能など、クライアントの機能に応じてメッセージレートを制御できます。
    • クリーン スタートとセッションの有効期限: 構成可能な時間間隔でクライアントのサブスクリプション情報とメッセージを保持することで、クライアントがセッションの信頼性とセキュリティを最適化できるようにします。
    • 否定受信確認: クライアントがさまざまなエラー コードに効率的に対応できるようにします。
    • サーバー送信切断パケット: クライアントが切断を効率的に処理できるようにします。
    • MQTT 保持: ブローカーが最後に発行したメッセージをトピックに格納し、新しいサブスクライバーに自動的に配信します。 この機能を使用すると、デバイスは次の更新を待たずに、最新の既知の状態を即座に受信できます。 この機能により、IoT システム間での状態同期の高速化と信頼性の向上が可能になります。
  • MQTT v3.1.1 の機能:

    • 最後の意志と遺言: MQTT クライアントに、他の MQTT クライアントの突然の切断を通知します。 この機能を使うと、予期しない切断の際に MQTT クライアント間の予測可能で信頼性の高い通信フローを実現できます。
    • 永続的なセッション: クライアントが切断されたときにクライアントのサブスクリプション情報とメッセージを保持することで、信頼性を確保します。
    • サービス品質 (QoS) 0 と 1: 通信の効率と信頼性をクライアントに制御します。
    • MQTT 保持: ブローカーが最後に発行したメッセージをトピックに格納し、新しいサブスクライバーに自動的に配信します。 この機能を使用すると、デバイスは次の更新を待たずに、最新の既知の状態を即座に受信できます。 この機能により、IoT システム間での状態同期の高速化と信頼性の向上が可能になります。

以降のセクションでは、MQTT ブローカーでサポートされている機能と MQTT v5 仕様の現在の違いについて説明します。 QoS 2 はサポートされていません。

MQTT ブローカーの詳細と現在の制限事項について説明します。

パブリッシュ/サブスクライブ メッセージング モデル

発行/サブスクライブ メッセージング モデルは、クライアントへのスケーラブルで非同期の通信を提供します。 これにより、クライアントは多数の接続とメッセージを処理する負荷をサービスにオフロードできます。 パブリッシュ/サブスクライブ メッセージング モデルを使用すると、クライアントは、一対多、多対一、一対一のメッセージング パターンを使用して効率的に通信できます。

  • 一対多: クライアントは、関心のあるすべてのクライアントに対してサービスがレプリケートするメッセージを 1 つだけ発行できます。
  • 多対一: クライアントが MQTT ブローカーへの多数の接続を管理する負担を軽減できます。
  • 1 対 1: クライアントの役割に関係なく、クライアントが他のクライアントと制限なく通信できるようにします。

名前空間

Event Grid 名前空間は、MQTT ブローカー機能をサポートするリソースと、 プル配信機能をサポートするリソースの管理コンテナーです。 MQTT クライアントは MQTT ブローカーに接続し、メッセージのパブリッシュ/サブスクライブを行うことができます。 MQTT ブローカーは、クライアントを認証し、パブリッシュ/サブスクライブ要求を承認し、関心のあるクライアントにメッセージを転送します。 名前空間の概念の詳細を確認します。

クライアント

クライアントは、MQTT メッセージを発行およびサブスクライブする IoT デバイスまたはアプリケーションを参照します。

IoT デバイスは、テレメトリを送信してコマンドを受信するためにインターネットに接続されている物理オブジェクトです。 これらのデバイスは、センサー、アプライアンス、マシン、または埋め込みセンサーとソフトウェアを搭載したその他のオブジェクトです。 センサーとソフトウェアを使用すると、相互に通信したり、周囲の環境とやり取りしたりできます。 IoT デバイスの価値は、リアルタイムのデータと分析情報を提供できることにあります。これにより、企業や個人は情報に基づいた意思決定を行い、効率と生産性を向上させることができます。

IoT アプリケーションは、IoT デバイスとやり取りして、そのデータを処理するように設計されているソフトウェアです。 通常、データ収集、処理、ストレージ、視覚化、分析などのコンポーネントが含まれます。 これらのアプリケーションを使用すると、ユーザーは接続されたデバイスを監視および制御し、タスクを自動化し、IoT デバイスによって生成されたデータから分析情報を得ることができます。

クライアント認証

Event Grid には、接続が許可されているクライアントに関する情報を格納するクライアント レジストリがあります。 クライアントが接続するには、クライアント レジストリにそのクライアントのエントリが存在する必要があります。 クライアントは MQTT ブローカーに接続する際に、ID レジストリに格納されている資格情報に基づいて MQTT ブローカーで認証する必要があります。 MQTT ブローカーでは、次のクライアント認証メカニズムがサポートされています。

アクセス制御

IoT 環境の非常に大きな規模と制約付きデバイス固有のセキュリティ上の課題を考慮すると、アクセス制御は IoT シナリオにとって重要です。 Event Grid は、柔軟なアクセス制御モデルを使用してロールベースのアクセス制御を提供します。このモデルを使用して、トピックを発行またはサブスクライブするクライアントの承認を管理できます。

膨大な規模の IoT 環境では、各クライアントのアクセス許可を各トピックに割り当てるのは非常に面倒です。 Event Grid の柔軟なアクセス制御は、クライアントとトピックをクライアント グループとトピック スペースにグループ化して、このスケールの課題に取り組みます。 クライアント グループとトピックスペースを作成したら、アクセス許可バインディングを構成して、クライアント グループへのアクセスを許可して、トピック領域をパブリッシュまたはサブスクライブすることができます。

Event Grid MQTT ブローカーのアクセス制御モデルを示す図。

トピック空間では、クライアント グループ内の各クライアントがその独自のトピックを発行またはサブスクライブするための認可を制御することで、詳細なアクセス制御も提供されます。 この詳細なアクセス制御は、トピック テンプレートの変数を使用して実現されます。 アクセス制御の詳細については、こちらを参照してください。

ルーティング

Event Grid を使用すると、MQTT メッセージを Azure サービスまたは Webhook にルーティングして、さらに処理することができます。 その結果、特にデータ分析、ストレージ、視覚化などのユース ケースにおいて IoT データを使用して、エンド ツー エンドのソリューションを構築できます。 ルーティング構成を使用すると、すべての MQTT メッセージをクライアントから Event Grid 名前空間トピック または Event Grid カスタム トピックに送信できます。 メッセージがトピックに含まれると、トピックからのメッセージを使用するようにイベント サブスクリプションを構成できます。 たとえば、この機能を使用すると、Event Grid を使用して、IoT デバイスから Event Hubs にテレメトリをルーティングし、Azure Stream Analytics にルーティングして、デバイス テレメトリから分析情報を得ることができます。 ルーティングの詳細を確認 します

Event Grid での MQTT メッセージ ルーティングを示す図。

Microsoft Fabric イベントストリームへの MQTT イベント (プレビュー)

IoT データのリアルタイム分析、ストレージ、視覚化のために、Event Grid 名前空間から Microsoft Fabric イベントストリームに MQTT メッセージとクラウド イベントをルーティングします。

MQTT イベントを Microsoft Fabric にルーティングする方法を示す図。

Edge MQTT ブローカーの統合

Event Grid は Azure IoT Operations と統合され、エッジ上の MQTT ブローカー機能をクラウドの Event Grid MQTT ブローカー機能と橋渡しします。 Azure IoT Operations は、Azure Arc 対応 Kubernetes クラスターで実行されるエッジ コンピューティング用の新しい分散 MQTT ブローカーを提供します。 システム割り当てマネージド ID を使用して、Microsoft Entra ID 認証を使用して Event Grid MQTT ブローカーに接続できます。これにより、資格情報の管理が簡略化されます。 MQTT ブローカーは、IoT デバイスとアプリケーションの高可用性、スケーラビリティ、およびセキュリティを提供します。 Azure IoT Operations MQTT ブローカーを Event Grid MQTT ブローカーに接続する方法について説明します。

MQTT クライアントのライフ サイクル イベント

クライアント のライフサイクル イベントを使用すると、アプリケーションはクライアント接続の状態またはクライアント リソース操作に関するイベントに対応できます。 クライアントの接続状態を追跡し、クライアント切断の軽減アクションに対応し、自動フェールオーバー中にクライアントがアタッチされている名前空間を追跡できます。 MQTT クライアントのライフ サイクル イベントの詳細を確認します。

カスタム ドメイン名

カスタム ドメイン名のサポートにより、ユーザーは Event Grid 名前空間の MQTT および HTTP エンドポイントに独自のドメイン名を割り当てることができます。これにより、セキュリティが強化され、クライアント構成が簡略化されます。 この機能は、企業がセキュリティとコンプライアンスの要件を満たすのに役立ち、ドメインに既にリンクされているクライアントを変更する必要がなくなります。 カスタム ドメイン名を複数の名前空間に割り当てることは、可用性の向上、容量の管理、リージョン間クライアント モビリティの処理にも役立ちます。 カスタム ドメイン名の詳細を確認します。

MQTT Retain (プレビュー)

MQTT 保持メッセージは、ブローカー上のトピックの最後の既知の適切な値を格納するために使用され、新しいサブスクライバーが次の発行を待たずに最新のメッセージをすぐに受け取ることができます。 この機能は、デバイスの状態レポート、制御信号、構成データなどのシナリオで特に役立ちます。この場合、接続時に常に最新のメッセージをクライアントが使用できる必要があります。 詳細については、 Azure Event Grid での MQTT の保持のサポートに関するページを参照してください。

HTTP 発行 (プレビュー)

HTTP Publish を使用すると、アプリケーションは、アクティブな MQTT セッションを維持することなく、単純な HTTPS POST 要求を介して MQTT メッセージを Event Grid MQTT ブローカーに発行できます。 サーバーレス関数、クラウド サービス、バックエンド アプリケーションなど、MQTT クライアントが実現できない、または必要ないシナリオに最適です。 HTTP 発行を使用すると、イベントドリブン アーキテクチャで MQTT メッセージを確実かつ安全に挿入できます。 一般的なユース ケースには、Azure Functions、Azure Logic Apps、または API 統合からのデバイス コマンド、アラート、またはコントロール シグナルの発行が含まれます。 詳細については、「 Azure Event Grid での MQTT メッセージの HTTP 発行」を参照してください。

概念

Event Grid での MQTT ブローカーの概念の詳細を確認します。

MQTT ブローカーとその主な概念の詳細を確認します。