次の方法で共有


Azure Event Grid を使用した MQTT メッセージの HTTP 発行 (プレビュー)

Azure Event Grid MQTT ブローカーの HTTP Publish API を使用すると、顧客は標準の HTTP 要求を使用して Message Queuing Telemetry Transport (MQTT) メッセージを発行できるようになります。 この機能は、MQTT クライアントの直接接続を補完するものです。 サーバーからデバイスへのコマンドと制御、更新、または保持されたメッセージの管理に HTTP を使用するサーバー側システム向けの、シンプルでスケーラブルなオプションとして利用できます。

この機能は現在プレビュー段階です。

主な利点:

  • 永続的な MQTT セッションを開いたままにしなくても、バックエンド サービスから MQTT メッセージを送信できます。
  • クライアントごとの MQTT セッションを制限することでブローカーの安定性を保護できます。
  • MQTT と HTTP から送信されるメッセージに対して一貫性した処理を確保します。

HTTP Publish を使用する場合

次の場合は HTTP Publish の使用を検討してください。

  • バックエンド サービスは HTTP ネイティブであり、MQTT 経由でデバイス コマンドまたは更新を送信する必要がある。
  • MQTT 接続を開かずに保持されたメッセージを管理したい。
  • セッション制限を使い果たすことなく、発行容量をスケールアップする必要がある。

動作方法

  1. HTTP クライアントからは、MQTT Publish の詳細を含む HTTP POST 要求が発行されます。
  2. Event Grid により、HTTP 要求の各部分は標準の MQTT PUBLISH パケットのプロパティにマップされます。
  3. メッセージは Event Grid ルーティングおよびエンリッチメント パイプラインを通過します。これにより、配信保証が確保され、エンリッチメントまたは変換が適用されます。

例: MQTT Publish 相当

PUBLISH Topic Name: devices/CXa-23112/prompt  
QoS: 1  
RETAIN: 0  
Response Topic: devices/CXa-23112/reply  
Correlation Data: >U±¶¶»/  
User Property: Urgency = alert  
User Property: RequestId = 55f4a7ee-b0b4-4d7f-8eb5-2edba2ced5d7  
Payload: Please accept terms of licensing and agreement

例: HTTP Publish 要求

POST /mqtt/messages?topic=devices%2FCXa-23112%2Fprompt&api-version=2025-02-15-preview HTTP/1.1  
Host: nsname.westus3-1.ts.eventgrid.azure.net  
Authorization: Bearer <ENTRA_TOKEN_HERE>  
mqtt-qos: 1  
mqtt-retain: 0  
mqtt-response-topic: devices%2FCXa-23112%2Freply  
mqtt-correlation-data: PlXCscK2wrbCuy8=  
mqtt-user-properties: W3siVXJnZW5jeSI6ImFsZXJ0In0seyJSZXF1ZXN0SWQiOiI1NWY0YTdlZS1iMGI0LTRkN2YtOGViNS0yZWRiYTJjZWQ1ZDcifV0=  
Content-Type: text/plain;charset=UTF-8  
Date: Sun, 06 Nov 1994 08:49:37 GMT  
Content-Length: 46  

Please accept terms of licensing and agreement

要求パラメーター

次の表は、HTTP 要求の各部分が MQTT PUBLISH パケットのプロパティにどのようにマップされるかを示しています。 詳細については、元のドキュメントを参照してください。

MQTT Publish の各部 型/値 ロケーション 必須 Description
トピック名 パーセントエンコード文字列 Query topic イエス 発行する MQTT トピック
QoS 0 または 1 Query qos または header mqtt-qos いいえ [既定値 = 1] サービス品質 (QoS) レベル
RETAIN フラグ 0 または 1 Query retain または header mqtt-retain いいえ [既定値 = 0] メッセージを保持するかどうか
Response topic パーセントエンコード文字列 Header mqtt-response-topic いいえ 必要な場合は応答トピック
Correlation data Base64 文字列 Header mqtt-correlation-data いいえ 追跡用の追加データ
ユーザー プロパティ Base64 JSON 配列 Header mqtt-user-properties いいえ カスタム ユーザー プロパティ
コンテンツの種類 Header content-type いいえ ペイロードの種類
Message expiry interval 符号なし整数 Header mqtt-message-expiry いいえ 保持期間 (秒)
Payload format indicator 0 または 1 Header mqtt-payload-format-indicator いいえ [既定値 = 0] 書式インジケーター
ペイロード バイト(データ単位) HTTP 本文 いいえ メッセージ本文

Notes:

  • 両方が存在する場合、query パラメーター値が header 値をオーバーライドします。
  • topic と response topic にはパーセント エンコードが必要です。
  • Correlation data は Base64 でエンコードする必要があります。

HTTP Publish を使用するための大まかな手順

  1. 認証用に Microsoft Entra ID ベアラー トークンを準備します。
  2. Event Grid MQTT ブローカー エンドポイントへの HTTP POST 要求を構築します。
  3. topic などの必須 query パラメーターを含めます。
  4. QoS、RETAIN フラグ、response topic、user properties の省略可能なヘッダーを追加します。
  5. HTTP 本文としてペイロードを追加します。
  6. 要求を送信します。
  7. Event Grid ポータルのログとメトリックで配信を確認します。

認証と承認

  • HTTP Publish は認証に Microsoft Entra ID を使用します。
  • authorization ヘッダーにはベアラー トークンが必要です。
  • Microsoft Entra オブジェクト ID は MQTT クライアント ID になります。
  • AuthN/AuthZ モデルは標準の MQTT 接続に合わせて調整されています。

ルーティングと監視

メトリックとログには以下が含まれます。

  • プロトコル: http-publish
  • リクエストID
  • トピック
  • 発信元 IP
  • 認可プリンシパル

ベスト プラクティス

  • 可能な場合は小文字のヘッダー キーを使用します。 HTTP/2 ヘッダー キーでは、大文字と小文字の区別はされません。
  • HTTP メッセージは直接 MQTT メッセージよりも大きくなる傾向があるため、スループットを監視してください。
  • HTTP Publish は、直接 MQTT で発行されたメッセージとスループット制限を共有することに注意してください。

Throttling

HTTP Publish は、全体的な MQTT スループット クォータにカウントされます。 制限を超えないように使用状況を監視してください。