Sdílet prostřednictvím


Publikování zpráv MQTT prostřednictvím protokolu HTTP pomocí Azure Event Gridu (Preview)

Azure Event Grid teď podporuje publikování zpráv přenosu telemetrie služby Řízení front zpráv (MQTT) prostřednictvím protokolu HTTP. Event Grid umožňuje back-endovým systémům odesílat zprávy do zařízení bez zachování trvalých připojení MQTT. Tento přístup zjednodušuje integraci pro aplikace, které dávají přednost bezstavové komunikaci. Používá zabezpečené ověřování s ID Microsoft Entra a poskytuje škálovatelné a spolehlivé doručování klientůM MQTT. V tomto článku se dozvíte, jak používat rozhraní HTTP Publish API. Dozvíte se také, jak získat potřebné přihlašovací údaje a ověřit doručení zpráv pomocí oblíbených nástrojů, jako jsou Bruno a MQTTX.

Poznámka:

Tato funkce je aktuálně dostupná jako ukázková verze.

Tento článek vysvětluje, jak publikovat zprávy MQTT prostřednictvím protokolu HTTP pomocí event Gridu.

Získání podrobností o připojení

  • Plně kvalifikovaný název domény oboru názvů: Příklad:contoso.westus3-1.ts.eventgrid.azure.net
  • Téma: Příkladem je devices/CXa-23112/prompt.
  • Přihlašovací údaje: Přihlašovací údaje klienta Microsoft Entra ID.

Přiřazení rolí

Identita použitá k provedení požadavku HTTP Publish musí mít roli EventGrid TopicSpaces Publisher Azure RBAC pro přístup vydavatele zpráv MQTT.

Získání nosné tokeny

Spuštěním následujícího příkazu Azure CLI získejte nosný token:

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

Uložte tento token, abyste ho mohli použít v Authorization: Bearer <TOKEN> záhlaví.

Publikování zpráv pomocí protokolu HTTP

Tady je příklad příkazu curl pro simulaci publikování HTTP:

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" 

V tomto ukázkovém příkazu:

  • Téma je kódováno procentem.
  • Volitelné hlavičky se přidají pro QoS (Quality of Service), RETAIN příznak, téma odpovědi a vlastnosti uživatele.
  • Payload je součástí těla požadavku.

Ověřte v MQTTX

K přihlášení k odběru stejného tématu použijte MQTTX nebo libovolnou knihovnu MQTT (například paho-mqtt Python), abyste potvrdili doručení.

  1. Vytvořte nové připojení v 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. Přihlaste se k odběru tématu, které jste použili v příkazu HTTP POST .

  3. Spusťte příkaz Http Publish a sledujte zprávu v MQTTX. Měla by se zobrazit datová část.

Pokud publikování proběhne úspěšně, zobrazí se:

  • Odpověď HTTP: "204 Žádný obsah" nebo "202 Akceptované" (v závislosti na pravidlech směrování).
  • Zobrazí se zpráva: Klient MQTT okamžitě zobrazí zprávu.

Řešení problémů

  • 401 Neautorizováno: Pokud token chybí nebo vypršela jeho platnost, zobrazí se chyba 401 Neautorizováno. Obnovte token.
  • 403 Zakázáno: Pokud téma není platné nebo nemáte práva, zobrazí se chyba 403 Zakázáno. Zkontrolujte téma nebo oprávnění.
  • 500 Vnitřní chyba serveru: Pokud směrování selže interně, zkontrolujte metriky a diagnostické protokoly pro váš obor názvů Event Gridu.
  • Zpráva se nezobrazí: Pokud se zpráva nezobrazí, ujistěte se, že je toto téma v adrese URL kódované v procentech. Zkontrolujte konfiguraci směrování zprostředkovatele a ověřte, že používáte stejný obor názvů.