Dela via


Publicera MQTT-meddelanden via HTTP med Azure Event Grid (förhandsversion)

Azure Event Grid stöder nu publicering av MQTT-meddelanden (Message Queuing Telemetry Transport) via HTTP. Event Grid gör det möjligt för serverdelssystem att skicka meddelanden till enheter utan att underhålla beständiga MQTT-anslutningar. Den här metoden förenklar integreringen för program som föredrar tillståndslös kommunikation. Den använder säker autentisering med Microsoft Entra-ID och ger skalbar och tillförlitlig leverans till MQTT-klienter. I den här artikeln får du lära dig hur du använder HTTP-publicerings-API:et. Du lär dig också hur du hämtar nödvändiga autentiseringsuppgifter och verifierar meddelandeleveransen med hjälp av populära verktyg som Bruno och MQTTX.

Anmärkning

Den här funktionen är för närvarande i förhandsversion.

Den här artikeln beskriver hur du publicerar MQTT-meddelanden via HTTP med Event Grid.

Hämta anslutningsinformation

  • Fullständigt domännamn för namnområde (FQDN): Ett exempel är contoso.westus3-1.ts.eventgrid.azure.net.
  • Ämne: Ett exempel är devices/CXa-23112/prompt.
  • Autentiseringsuppgifter: Autentiseringsuppgifter för Microsoft Entra-ID-klienten.

Rolltilldelningar

Den identitet som används för att göra HTTP-publiceringsbegäran måste ha Azure RBAC-rollen EventGrid TopicSpaces Publisher för MQTT-meddelandeutgivarens åtkomst.

Hämta en ägartoken

Kör följande Azure CLI-kommando för att hämta en ägartoken:

az account get-access-token --resource=https://eventgrid.azure.net --query accessToken -o tsv

Spara den här token som ska användas i Authorization: Bearer <TOKEN> rubriken.

Publicera meddelanden med hjälp av HTTP

Här är ett exempel på ett curl-kommando för att simulera HTTP Publish:

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" 

I det här exempelkommandot:

  • Ämnet är procentkodat.
  • Valfria rubriker läggs till för QoS (Quality of Service), RETAIN flaggan, svarsämnet och användaregenskaperna.
  • Nyttolasten hamnar i begärandetexten.

Verifiera i MQTTX

Använd MQTTX eller valfritt MQTT-bibliotek (som paho-mqtt Python) för att prenumerera på samma ämne för att bekräfta leveransen.

  1. Skapa en ny anslutning i MQTTX:

    • Host: contoso.westus3-1.ts.eventgrid.azure.net
    • Port: 8883 (TLS)
    • Client ID: same as your Entra Object ID
    • Username/Password: N/A — use certificate or token auth if configured
  2. Prenumerera på det ämne som du använde i HTTP-kommandot POST .

  3. Kör HTTP Publish och håll utkik efter meddelandet i MQTTX. Nyttolasten bör visas.

Om publiceringen lyckas ser du:

  • HTTP-svar: "204 Inget innehåll" eller "202 accepterades" (beroende på routningsregler).
  • Meddelandet visas: MQTT-klienten ser meddelandet direkt.

Felsökning

  • 401 Obehörig: Om token saknas eller har upphört att gälla visas "401 Obehörig". Uppdatera din token.
  • 403 Förbjudet: Om ämnet är ogiltigt eller om du inte har rättigheter visas "403 Förbjudet". Kontrollera ditt ämne eller dina behörigheter.
  • 500 Internt serverfel: Om routningen misslyckas internt kontrollerar du måtten och diagnostikloggarna för Event Grid-namnområdet.
  • Meddelandet visas inte: Om meddelandet inte visas kontrollerar du att ämnet är procentkodat i URL:en. Kontrollera konfigurationen för koordinatordirigering och kontrollera att du använder samma namnområde.