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 接続を開かずに保持されたメッセージを管理したい。
- セッション制限を使い果たすことなく、発行容量をスケールアップする必要がある。
動作方法
- HTTP クライアントからは、MQTT Publish の詳細を含む HTTP
POST要求が発行されます。 - Event Grid により、HTTP 要求の各部分は標準の MQTT PUBLISH パケットのプロパティにマップされます。
- メッセージは 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 を使用するための大まかな手順
- 認証用に Microsoft Entra ID ベアラー トークンを準備します。
- Event Grid MQTT ブローカー エンドポイントへの HTTP
POST要求を構築します。 - topic などの必須 query パラメーターを含めます。
- QoS、
RETAINフラグ、response topic、user properties の省略可能なヘッダーを追加します。 - HTTP 本文としてペイロードを追加します。
- 要求を送信します。
- 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 スループット クォータにカウントされます。 制限を超えないように使用状況を監視してください。