Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit der HTTP-Broker-API für die HTTP-Veröffentlichung von Azure Event Grid können Kunden MQTT-Nachrichten (Message Queuing Telemetry Transport) mithilfe standardmäßiger HTTP-Anforderungen veröffentlichen. Diese Funktion ergänzt direkte MQTT-Clientverbindungen. Sie bietet eine einfache und skalierbare Option für serverseitige Systeme, die HTTP für Server-zu-Gerät-Befehle und -Steuerung, Updates oder die Verwaltung von beibehaltenen Nachrichten bevorzugen.
Hauptvorteile:
- Ermöglicht Back-End-Diensten das Senden von MQTT-Nachrichten, ohne permanente MQTT-Sitzungen offen zu halten.
- Trägt zum Schutz der Brokerstabilität bei, indem MQTT-Sitzungen pro Client eingeschränkt werden.
- Stellt eine konsistente Verarbeitung für Nachrichten sicher, die von MQTT und HTTP stammen.
Verwendung der HTTP-Veröffentlichung
Erwägen Sie die Verwendung der HTTP-Veröffentlichung in folgenden Fällen:
- Ihre Back-End-Dienste sind HTTP-nativ und müssen Gerätebefehle oder Updates über MQTT senden.
- Sie möchten beibehaltene Nachrichten verwalten, ohne eine MQTT-Verbindung zu öffnen.
- Sie müssen die Veröffentlichungskapazität skalieren, ohne Sitzungsgrenzwerte zu überschreiten.
Funktionsweise
- HTTP-Clients stellen eine HTTP-
POST-Anforderung mit MQTT-Veröffentlichungsdetails aus. - Event Grid ordnet HTTP-Anforderungsteile den standardmäßigen MQTT-PUBLISH-Paketeigenschaften zu.
- Nachrichten fließen durch die Event Grid-Routing- und Anreicherungspipeline, wodurch Übermittlungsgarantien gewährleistet und alle Anreicherungen oder Transformationen angewendet werden.
Beispiel: Äquivalent zur MQTT-Veröffentlichung
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
Beispiel: HTTP-Veröffentlichungsanforderung
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
Anforderungsparameter
In der folgenden Tabelle wird beschrieben, wie HTTP-Anforderungsteile den Eigenschaften von MQTT-PUBLISH-Paketen zugeordnet werden. Ausführliche Informationen finden Sie in der Originaldokumentation.
| Teil der MQTT-Veröffentlichung | Typ/Werte | Standort | Erforderlich | Description |
|---|---|---|---|---|
| Themenname | Prozentcodierte Zeichenfolge | Abfrage topic |
Ja | MQTT-Thema für die Veröffentlichung |
| QoS | 0 oder 1 | Abfrage qos oder Kopfzeile mqtt-qos |
Nein [Standard = 1] | QoS-Ebene |
RETAIN-Flag |
0 oder 1 | Abfrage retain oder Kopfzeile mqtt-retain |
Nein [Standard = 0] | Ob die Nachricht beibehalten werden soll |
| Antwortthema | Prozentcodierte Zeichenfolge | Header mqtt-response-topic |
Nein | Antwortthema bei Bedarf |
| Korrelationsdaten | Base64-Zeichenfolge | Header mqtt-correlation-data |
Nein | Zusätzliche Daten für die Nachverfolgung |
| Benutzereigenschaften | Base64-JSON-Array | Kopfzeile mqtt-user-properties |
Nein | Benutzerdefinierte Benutzereigenschaften |
| Inhaltstyp | Schnur | Header content-type |
Nein | Nutzlasttyp |
| Ablaufintervall der Nachricht | Ganze Zahl ohne Vorzeichen | Kopfzeile mqtt-message-expiry |
Nein | Aufbewahrungszeitraum in Sekunden |
| Nutzlastformatindikator | 0 oder 1 | Kopfzeile mqtt-payload-format-indicator |
Nein [Standard = 0] | Formatindikator |
| Nutzlast | Byte-Einheiten | HTTP-Textkörper | Nein | Nachrichtentext |
Notes:
- Abfrageparameterwerte überschreiben Headerwerte, wenn beide vorhanden sind.
- Die Prozentcodierung ist für Themen- und Antwortthemen erforderlich.
- Korrelationsdaten müssen Base64-codiert sein.
Allgemeine Schritte zur Verwendung der HTTP-Veröffentlichung
- Bereiten Sie Ihr Microsoft Entra ID-Bearertoken für die Authentifizierung vor.
- Erstellen Sie Ihre HTTP-
POST-Anforderung an Ihren Event Grid-MQTT-Brokerendpunkt. - Schließen Sie erforderliche Abfrageparameter wie das Thema ein.
- Fügen Sie optionale Header für QoS, das
RETAIN-Flag, das Antwortthema und die Benutzereigenschaften hinzu. - Fügen Sie Ihre Nutzlast als HTTP-Text hinzu.
- Senden Sie die Anforderung.
- Bestätigen Sie die Übermittlung über Protokolle und Metriken im Event Grid-Portal.
Authentifizierung und Autorisierung
- Die HTTP-Veröffentlichung verwendet Microsoft Entra ID für die Authentifizierung.
- Im Autorisierungsheader ist ein Bearertoken erforderlich.
- Die Microsoft Entra-Objekt-ID wird zur MQTT-Client-ID.
- Das AuthN/AuthZ-Modell ist an MQTT-Standardverbindungen ausgerichtet.
Routing und Observability
Metriken und Protokolle umfassen:
- Protokoll:
http-publish - Anfrage-ID
- Thema
- Quell-IP
- Autorisierungsprinzipal
Bewährte Methoden
- Verwenden Sie nach Möglichkeit Kleinbuchstaben für Headerschlüssel. Bei HTTP/2-Headerschlüsseln wird die Groß-/Kleinschreibung nicht beachtet.
- Überwachen Sie den Durchsatz, da HTTP-Nachrichten tendenziell größer als direkte MQTT-Nachrichten sind.
- Beachten Sie, dass die HTTP-Veröffentlichung Durchsatzgrenzwerte mit Nachrichten mit direkter MQTT-Veröffentlichung teilt.
Drosselung
Die HTTP-Veröffentlichung wird auf Ihr gesamtes MQTT-Durchsatzkontingent angerechnet. Überwachen Sie Ihre Nutzung, um Überschreitungen von Grenzwerten zu vermeiden.