Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
- I client HTTP inviano una richiesta HTTP
POSTcon i dettagli di pubblicazione MQTT. - Griglia di eventi esegue il mapping delle parti di richiesta HTTP alle proprietà standard dei pacchetti MQTT PUBLISH.
- 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 |
Sì | 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
- Preparare il token di connessione di Microsoft Entra ID per l'autenticazione.
- Creare la richiesta HTTP
POSTall'endpoint del broker MQTT di Griglia di eventi. - Includere i parametri di query obbligatori come l'argomento.
- Aggiungere intestazioni facoltative per QoS, il flag
RETAIN, l’argomento di risposta e le proprietà utente. - Aggiungere il payload come corpo HTTP.
- Inviare la richiesta.
- 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.