HTTP-publicatie van MQTT-berichten met Azure Event Grid

De Azure Event Grid MQTT Broker HTTP Publish-API biedt klanten de mogelijkheid om berichten van Message Queuing Telemetry Transport (MQTT) te publiceren met behulp van standaard HTTP-aanvragen. Deze mogelijkheid vormt een aanvulling op directe MQTT-clientverbindingen. Het biedt een eenvoudige en schaalbare optie voor server-side-systemen die HTTP verkiezen voor server-naar-apparaat-opdracht- en besturing, updates of het beheer van retained messages.

Belangrijkste voordelen:

  • Hiermee kunnen back-endservices MQTT-berichten verzenden zonder permanente MQTT-sessies geopend te houden.
  • Helpt brokerstabiliteit te beschermen door MQTT-sessies per client te beperken.
  • Zorgt voor consistente verwerking voor berichten die afkomstig zijn van MQTT en HTTP.

Wanneer gebruikt u HTTP Publish?

Overweeg om HTTP Publish te gebruiken wanneer:

  • Uw back-endservices zijn systeemeigen HTTP en moeten apparaatopdrachten of updates via MQTT verzenden.
  • U wilt bewaarde berichten beheren zonder een MQTT-verbinding te openen.
  • U moet de publicatiecapaciteit omhoog schalen zonder dat de sessielimieten worden uitgeput.

Hoe het werkt

  1. HTTP-clients geven een HTTP-aanvraag POST uit met MQTT-publicatiedetails.
  2. Event Grid wijst HTTP-aanvraagonderdelen toe aan standaard MQTT PUBLISH-pakketeigenschappen.
  3. Berichten stromen door de Event Grid-routerings- en verrijkingspijplijn, die zorgt voor bezorgingsgaranties en het toepassen van eventuele verrijkingen of transformaties.

Voorbeeld: equivalent van 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

Voorbeeld: HTTP-publicatieaanvraag

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

Aanvraagparameters

In de volgende tabel wordt beschreven hoe HTTP-aanvraagonderdelen worden toegewezen aan MQTT PUBLISH-pakketeigenschappen. Raadpleeg de oorspronkelijke documentatie voor volledige informatie.

MQTT-publicatieonderdeel Type/waarden Locatie Verplicht Description
Onderwerpnaam Tekenreeks met procentcode Vraag topic Ja MQTT-onderwerp om naar te publiceren
QoS 0 of 1 Zoekopdracht qos of koptekst mqtt-qos Nee [standaard = 1] QoS-niveau (Quality of Service)
RETAIN vlag 0 of 1 Zoekopdracht retain of koptekst mqtt-retain Nee [standaard = 0] Of het bericht moet worden bewaard
Antwoordonderwerp Procentgecodeerde tekenreeks Koptekst mqtt-response-topic Nee. Antwoordonderwerp indien nodig
Correlatiegegevens Base64-tekenreeks Koptekst mqtt-correlation-data Nee. Extra gegevens voor tracering
Gebruikerseigenschappen Base64 JSON-array Koptekst mqtt-user-properties Nee. Aangepaste gebruikerseigenschappen
Inhoudstype Snaar / Touwtje Koptekst content-type Nee. Payloadtype
Verloopinterval van bericht Ongesigneerd geheel getal Koptekst mqtt-message-expiry-interval Nee. Bewaarperiode in seconden
Indicator voor payloadindeling 0 of 1 Koptekst mqtt-payload-format-indicator Nee [standaard = 0] Opmaakindicator
Payload Bytes HTTP-hoofdtekst Nee. Berichtinhoud

Notes:

  • Queryparameterwaarden overschrijven headerwaarden als beide aanwezig zijn.
  • Percentagecodering is vereist voor onderwerp- en antwoordonderwerp.
  • Correlatiegegevens moeten base64-gecodeerd zijn.

Stappen op hoog niveau voor het gebruik van HTTP Publish

  1. Bereid uw Bearer-token van Microsoft Entra ID voor op verificatie.
  2. Bouw uw HTTP-aanvraag POST op uw Event Grid MQTT-brokereindpunt.
  3. Neem vereiste queryparameters op, zoals onderwerp.
  4. Voeg optionele headers toe voor QoS, de vlag, het RETAIN antwoordonderwerp en de gebruikerseigenschappen.
  5. Voeg uw payload toe als HTTP-body.
  6. Verzend de aanvraag.
  7. Bevestig de levering via logboeken en metrische gegevens in de Event Grid-portal.

Authenticatie en autorisatie

  • HTTP Publish maakt gebruik van Microsoft Entra-id voor verificatie.
  • Er is een bearer-token nodig in de autorisatieheader.
  • De Microsoft Entra-object-id wordt de MQTT-client-id.
  • Het AuthN/AuthZ-model wordt uitgelijnd met standaard MQTT-verbindingen.

Routering en waarneembaarheid

Metrische gegevens en logboeken zijn onder andere:

  • Protocol: http-publish
  • Aanvraag-id
  • Onderwerp
  • Bron IP-adres
  • Autorisatie-principal

Beste praktijken

  • Gebruik waar mogelijk headersleutels in kleine letters. HTTP/2-headersleutels zijn niet hoofdlettergevoelig.
  • Bewaak de doorvoer omdat HTTP-berichten meestal groter zijn dan directe MQTT-berichten.
  • Houd er rekening mee dat HTTP Publish doorvoerlimieten deelt met directe gepubliceerde MQTT-berichten.

Snelheidsbeperking

HTTP Publish telt mee voor uw totale MQTT-doorvoerquotum. Bewaak uw gebruik om te voorkomen dat de limieten worden overschreden.