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.
Azure Event Grid unterstützt jetzt das Veröffentlichen von Message Queuing Telemetry Transport (MQTT)-Nachrichten über HTTP. Event Grid ermöglicht Back-End-Systemen das Senden von Nachrichten an Geräte, ohne dauerhafte MQTT-Verbindungen aufrechtzuerhalten. Dieser Ansatz vereinfacht die Integration von Anwendungen, die statusfreie Kommunikation bevorzugen. Er verwendet sichere Authentifizierung mit Microsoft Entra ID und bietet skalierbare, zuverlässige Zustellung an MQTT-Clients. In diesem Artikel erfahren Sie, wie Sie die HTTP-Veröffentlichungs-API verwenden. Außerdem erfahren Sie, wie Sie die erforderlichen Anmeldeinformationen erhalten und die Nachrichtenübermittlung mithilfe beliebter Tools wie Bruno und MQTTX überprüfen.
In diesem Artikel wird erläutert, wie MQTT-Nachrichten über HTTP mit Event Grid veröffentlicht werden.
Holen Sie sich Ihre Verbindungsdetails
-
Vollqualifizierter Domänenname (FQDN) für Namespace:Ein Beispiel ist
contoso.westus3-1.ts.eventgrid.azure.net. -
Thema: Ein Beispiel ist
devices/CXa-23112/prompt. - Anmeldeinformationen: Microsoft Entra ID-Clientanmeldeinformationen.
Rollenzuweisungen
Die Identität, die für die HTTP-Veröffentlichungsanforderung verwendet wird, muss über die Azure RBAC-Rolle EventGrid TopicSpaces Publisher für MQTT-Nachrichtenherausgeberzugriff verfügen.
Abrufen eines Bearertokens
Führen Sie den folgenden Azure CLI-Befehl aus, um ein Bearertoken abzurufen:
az account get-access-token --resource=https://eventgrid.azure.net --query accessToken -o tsv
Speichern Sie dieses Token, das im Authorization: Bearer <TOKEN> Header verwendet werden soll.
Veröffentlichen von Nachrichten mithilfe von HTTP
Hier ist ein Beispiel für einen Curl-Befehl zum Simulieren der HTTP-Veröffentlichung:
curl -X POST "https://contoso.westus3-1.ts.eventgrid.azure.net/mqtt/messages?topic=devices%2XXXX-0000%2Fprompt&api-version=2025-08-01-preview" \
-H "Authorization: Bearer <ENTRA_TOKEN_HERE>" \
-H "mqtt-qos: 1" \
-H "mqtt-retain: 0" \
-H "mqtt-response-topic: devices%2XXXX-00000%2Freply" \
-H "mqtt-correlation-data: XXXXXXX" \
-H "mqtt-user-properties: XXXXXXXXXXXX" \
-H "Content-Type: text/plain;charset=UTF-8" \
--data-raw "Please accept terms of licensing and agreement"
In diesem Beispielbefehl:
- Das Thema ist prozentcodiert.
- Optionale Header werden für Quality of Service (QoS), das
RETAIN-Flag, das Antwortthema und die Benutzereigenschaften hinzugefügt. - Die Nutzlast wird im Anforderungstext eingefügt.
Überprüfen in MQTTX
Verwenden Sie MQTTX oder jede MQTT-Bibliothek (z. B. paho-mqtt Python), um dasselbe Thema zu abonnieren und die Übermittlung zu bestätigen.
Erstellen einer neuen Verbindung in MQTTX:
Host: contoso.westus3-1.ts.eventgrid.azure.netPort: 8883 (TLS)Client ID: same as your Entra Object IDUsername/Password: N/A — use certificate or token auth if configured
Abonnieren Sie das Thema, das Sie im HTTP-Befehl „
POST“ verwendet haben.Führen Sie HTTP Publish aus, und schauen Sie sich die Nachricht in MQTTX an. Ihre Nutzdaten sollten angezeigt werden.
Wenn die Veröffentlichung erfolgreich war, wird Folgendes angezeigt:
- HTTP-Antwort: „204 Kein Inhalt“ oder „202 Akzeptiert“ (abhängig von Routingregeln).
- Meldung wird angezeigt: Der MQTT-Client sieht die Nachricht sofort.
Fehlersuche
- 401 Nicht autorisiert: Wenn das Token fehlt oder abgelaufen ist, wird „401 Nicht autorisiert“ angezeigt. Aktualisieren Sie Ihr Token.
- 403 Verboten: Wenn das Thema ungültig ist oder Sie keine Rechte haben, wird „403 Verboten“ angezeigt. Überprüfen Sie Ihr Thema oder Ihre Berechtigungen.
- 500 Interner Serverfehler: Wenn das Routing intern fehlschlägt, überprüfen Sie die Metriken und Diagnoseprotokolle für Ihren Event Grid-Namespace.
- Meldung wird nicht angezeigt: Wenn die Nachricht nicht angezeigt wird, stellen Sie sicher, dass das Thema in der URL prozentcodiert ist. Überprüfen Sie die Brokerroutingkonfiguration, und stellen Sie sicher, dass Sie denselben Namespace verwenden.
Verwandte Inhalte
- Eine Übersicht über dieses Feature finden Sie unter HTTP-Veröffentlichung von MQTT-Nachrichten mit Azure Event Grid.