Condividi tramite


Pubblicazione HTTP di messaggi MQTT con Griglia di eventi di Azure (anteprima)

L'API di pubblicazione HTTP con broker MQTT di Griglia di eventi di Azure consente ai clienti di pubblicare messaggi MQTT (Message Queuing Telemetry Transport) usando richieste HTTP standard. Questa funzionalità integra le connessioni client MQTT dirette. Fornisce un'opzione semplice e scalabile per i sistemi lato server che preferiscono HTTP per il comando e il controllo da server a dispositivo, gli aggiornamenti o la gestione dei messaggi conservati.

Annotazioni

Questa funzionalità è attualmente disponibile solo in anteprima.

Vantaggi principali:

  • Consente ai servizi back-end di inviare messaggi MQTT senza mantenere aperte sessioni MQTT persistenti.
  • Consente di proteggere la stabilità del broker limitando le sessioni MQTT per client.
  • Garantisce un'elaborazione coerente per i messaggi provenienti da MQTT e HTTP.

Quando usare la pubblicazione HTTP

Valutare l’opportunità di usare la pubblicazione HTTP quando:

  • I servizi back-end sono HTTP nativi e devono inviare comandi o aggiornamenti a un dispositivo tramite MQTT.
  • Si desidera gestire i messaggi conservati senza aprire una connessione MQTT.
  • È necessario aumentare la capacità di pubblicazione senza esaurire i limiti di sessione.

Come funziona

  1. I client HTTP inviano una richiesta HTTP POST con i dettagli di pubblicazione MQTT.
  2. Griglia di eventi esegue il mapping delle parti di richiesta HTTP alle proprietà standard dei pacchetti MQTT PUBLISH.
  3. I messaggi passano attraverso la pipeline di routing e arricchimento di Griglia di eventi, garantendo la consegna e applicando qualsiasi arricchimento o trasformazione.

Esempio: equivalente alla pubblicazione MQTT

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

Esempio: Richiesta di pubblicazione HTTP

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

Parametri della richiesta

La tabella seguente descrive il mapping delle parti di una richiesta HTTP alle proprietà di un pacchetto MQTT PUBLISH. Per informazioni dettagliate, vedere la documentazione originale.

Parte MQTT Publish Tipo/Valori Posizione Obbligatorio Description
Nome argomento Stringa con codifica percentuale Quesito topic Argomento MQTT in cui pubblicare
QoS 0 o 1 Query qos o intestazione mqtt-qos No [impostazione predefinita = 1] Livello di Qualità del servizio (QoS)
RETAIN flag 0 o 1 Query retain o intestazione mqtt-retain No [impostazione predefinita = 0] Indica se conservare il messaggio
Argomento di risposta Stringa con codifica percentuale Intestazione mqtt-response-topic NO Argomento di risposta, se necessario
Dati di correlazione Base64 string Intestazione mqtt-correlation-data NO Dati aggiuntivi per il rilevamento
Proprietà utente Matrice JSON Base64 Intestazione mqtt-user-properties NO Proprietà utente personalizzate
Tipo di contenuto string Intestazione content-type NO Tipo di payload
Intervallo di scadenza del messaggio Intero senza segno Intestazione mqtt-message-expiry NO Periodo di conservazione in secondi
Indicatore del formato del payload 0 o 1 Intestazione mqtt-payload-format-indicator No [impostazione predefinita = 0] Indicatore del formato
Payload Bytes Corpo HTTP NO Corpo del messaggio

Notes:

  • I valori dei parametri della query sovrascrivono i valori di intestazione se entrambi sono presenti.
  • La codifica percentuale è necessaria per l'argomento e l’argomento di risposta.
  • I dati di correlazione devono essere codificati in Base64.

Passaggi generali per l'uso della pubblicazione HTTP

  1. Preparare il token di connessione di Microsoft Entra ID per l'autenticazione.
  2. Creare la richiesta HTTP POST all'endpoint del broker MQTT di Griglia di eventi.
  3. Includere i parametri di query obbligatori come l'argomento.
  4. Aggiungere intestazioni facoltative per QoS, il flag RETAIN, l’argomento di risposta e le proprietà utente.
  5. Aggiungere il payload come corpo HTTP.
  6. Inviare la richiesta.
  7. Confermare la consegna tramite log e metriche nel portale di Griglia di eventi.

Autenticazione e autorizzazione

  • La pubblicazione HTTP usa l'ID Microsoft Entra per l'autenticazione.
  • Nell'intestazione dell'autorizzazione è necessario un token di connessione.
  • L'ID oggetto di Microsoft Entra diventa l'ID client di MQTT.
  • Il modello AuthN/AuthZ è allineato alle connessioni MQTT standard.

Routing e osservabilità

Le metriche e i log includono:

  • Protocollo: http-publish
  • ID richiesta
  • Argomento
  • IP di origine
  • Entità di sicurezza dell’autorizzazione

Procedure consigliate

  • Se possibile, usare chiavi dell'intestazione minuscole. Le chiavi di intestazione HTTP/2 non fanno distinzione tra maiuscole e minuscole.
  • Monitorare la velocità effettiva poiché i messaggi HTTP tendono a essere più grandi dei messaggi MQTT diretti.
  • Osservare che la pubblicazione HTTP condivide i limiti di velocità effettiva con messaggi pubblicati direttamente in MQTT.

Limitazione

La pubblicazione HTTP contribuisce al raggiungimento della quota complessiva della velocità effettiva di MQTT. Monitorare l'utilizzo per evitare di superare i limiti.