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.
Event Grid ti permette di instradare i tuoi messaggi MQTT verso i servizi Azure o i webhook per ulteriori elaborazioni. Instradando questi dati, puoi costruire soluzioni end-to-end che utilizzano i tuoi dati IoT per analisi, archiviazione e visualizzazione.
Questo articolo spiega quando utilizzare il routing e ti mostra come configurare il routing sia per un argomento di namespace Event Grid sia per un argomento personalizzato.
Quando utilizzare il routing
Instradare i messaggi dai tuoi clienti verso un servizio Azure o il tuo endpoint personalizzato ti aiuta a massimizzare i benefici di questi dati. La seguente lista descrive alcuni dei numerosi casi d'uso di questa caratteristica:
- Analisi dei dati: estrai e analizza i messaggi instradati dai tuoi clienti per ottimizzare la soluzione. Ad esempio, analizza la telemetria delle tue macchine per prevedere quando programmare la manutenzione prima che avvengano guasti, per evitare ritardi e ulteriori danni.
- Applicazioni serverless: attivano una funzione serverless basata sui messaggi instradati dai tuoi client. Ad esempio, quando un sensore di movimento rileva un movimento, invia una notifica al personale di sicurezza per affrontarlo.
- Visualizzazioni dei dati: Costruisci visualizzazioni dei dati instradati dai tuoi clienti per rappresentare e comprenderli, e per evidenziare tendenze e outlier.
Configurare il routing
La configurazione di routing ti permette di inviare tutti i tuoi messaggi MQTT dai tuoi client sia a un argomento di namespace Event Grid sia a un argomento personalizzato di Event Grid. Dopo aver inserito i messaggi nell'argomento, è possibile configurare una sottoscrizione di eventi per usare i messaggi dell'argomento. Per ottenere questa configurazione, seguire questa procedura generale:
- Argomento del namespace come destinazione di instradamento:
- Crea un argomento di namespace per Event Grid in cui Event Grid instrada tutti i messaggi MQTT.
- Crea un abbonamento a eventi di tipo push per instradare questi messaggi a uno dei servizi Azure supportati o a un webhook personalizzato, oppure crea un abbonamento a eventi di tipo coda per estrarre i messaggi direttamente dall'argomento dello spazio dei nomi tramite la tua applicazione.
- Imposta la configurazione di routing che si riferisce all'argomento creato nel primo passaggio.
- Argomento personalizzato come destinazione di routing:
- Crea un topic personalizzato per Event Grid in cui Event Grid instrada tutti i messaggi MQTT. Questo argomento deve soddisfare i requisiti personalizzati di Event Grid per il routing.
- Creare una sottoscrizione di eventi di Griglia di eventi per instradare questi messaggi a uno dei servizi di Azure supportati o a un endpoint personalizzato.
- Imposta la configurazione di routing che si riferisce all'argomento creato nel primo passaggio.
Annotazioni
Disabilitare l'accesso pubblico alla rete sul namespace causa il fallimento del routing MQTT.
Differenza tra gli argomenti dello spazio dei nomi e gli argomenti personalizzati come destinazione di routing
La tabella seguente illustra la differenza tra gli argomenti dello spazio dei nomi e gli argomenti personalizzati come destinazione di routing. Per una suddivisione dettagliata delle quote e dei limiti inclusi da ogni risorsa della Griglia Eventi, vedi Quote e limiti.
| Confronto tra punti | Argomento dello spazio dei nomi | Argomento personalizzato |
|---|---|---|
| Capacità di produzione | Elevato, fino a 40 MB/s (ingresso) e 80 MB/s (uscita) | Basso, fino a 5 MB/s (ingresso e uscita) |
| Consegna pull | Sì | No |
| Consegna push a Hub eventi | Sì | Sì |
| Consegna push ai servizi di Azure (funzioni, webhook, code e argomenti del bus di servizio, inoltro di connessioni ibride e code di archiviazione) | No | Sì |
| Conservazione dei messaggi | 7 giorni | 1 giorno |
| Requisito di assegnazione di ruolo | Non è necessario perché il broker MQTT e il topic del namespace si trovano nello stesso namespace | È necessario perché lo spazio di nomi che ospita la funzionalità del broker MQTT e l'argomento personalizzato sono risorse diverse |
Requisiti per il routing dei topic personalizzati di Event Grid
L'argomento personalizzato Event Grid che usi per il routing deve soddisfare i seguenti requisiti:
- Deve utilizzare lo schema CloudEvents v1.0.
- Deve trovarsi nella stessa regione dello spazio dei nomi.
- Devi assegnare il ruolo Event Grid Data Sender a te stesso o all'identità gestita selezionata nell'argomento personalizzato Event Grid prima di applicare la configurazione di routing. Per assegnare il ruolo:
- Nel portale, vai alla risorsa argomentativa Event Grid che hai creato.
- Nel menu di controllo accesso (IAM ), seleziona Aggiungi assegnazione di ruolo.
- Nella scheda Ruolo, seleziona Event Grid Data Sender, quindi seleziona Avanti.
- Nella scheda Soci, seleziona Seleziona membri, poi inserisci il tuo nome utente Microsoft Entra nella casella Seleziona che appare (ad esempio,
user@contoso.com). - Seleziona il nome utente Microsoft Entra, quindi seleziona Rivedi e assegna.
Configurazione del portale di Azure
Per configurare il routing:
- Passare allo spazio dei nomi nel portale di Azure.
- Sotto Instradamento, seleziona Abilita instradamento.
- Per il tipo di argomento, seleziona tra argomento Namespace o argomento personalizzato.
-
Per Topic, seleziona l'topic che hai creato dove vengono instradati tutti i messaggi MQTT.
- Per gli argomenti personalizzati, la lista mostra solo quelli che soddisfano i requisiti di argomento personalizzato della Griglia Eventi per il routing.
- Se selezioni un argomento personalizzato, appare la sezione Identità Gestita per la Consegna . Seleziona una delle seguenti opzioni per l'identità che autentica il broker MQTT mentre consegna i messaggi MQTT all'argomento personalizzato:
- Nessuno: Assegna a te stesso il ruolo di Inviatore di Dati della Griglia di Eventi sull'argomento personalizzato.
- Identità assegnata al sistema: Abilita l'identità assegnata al sistema nello spazio dei nomi come prerequisito e assegna il ruolo di Inviatore Dati della Griglia Eventi all'identità assegnata dal sistema sull'argomento personalizzato.
- Identità assegnata dall'utente: Abilita l'identità assegnata dall'utente nello spazio dei nomi come prerequisito e assegna il ruolo Mittente dati di Griglia di eventi all'identità selezionata per l'argomento personalizzato. Se selezioni Identità assegnata dall'utente, appare un menu a tendina per selezionare l'identità.
- Seleziona Applica.
Per le istruzioni di configurazione degli arricchimenti, vedere Configurazione del portale di arricchimento.
Configurazione dell'interfaccia della riga di comando di Azure
az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json
NS.json
{
"properties": {
"inputSchema": "CloudEventSchemaV1_0",
"topicSpacesConfiguration": {
"state": "Enabled",
"routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
"routingIdentityInfo": {
"type": "UserAssigned",
"userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>"
}
}
}
}
In routingIdentityInfo, type accetta None, SystemAssigned, o UserAssigned. Imposta userAssignedIdentity solo quando type è UserAssigned.
Per istruzioni sulla configurazione degli arricchimenti, vedere Configurazione dell'interfaccia della riga di comando di arricchimento.
Comportamento di routing dei messaggi MQTT
Durante il routing dei messaggi MQTT ad argomenti personalizzati, Griglia di eventi consente un recapito durevole cercando di consegnare immediatamente ogni messaggio almeno una volta. Se c'è un guasto, Event Grid o ritenta la consegna o interrompe il messaggio destinato al routing. Griglia di eventi non garantisce l'ordine di recapito degli eventi, quindi i sottoscrittori potrebbero riceverli in ordine non ordinato.
Nella tabella seguente viene descritto il comportamento del routing dei messaggi MQTT in base a errori diversi.
| Error | Descrizione dell'errore | Comportamento |
|---|---|---|
| Errore: Argomento non trovato (TopicNotFoundError) | L'argomento personalizzato configurato per ricevere tutti i messaggi instradati MQTT è stato cancellato. | Event Grid perde il messaggio MQTT destinato al routing. |
| AuthenticationError | Il ruolo Mittente di dati di Griglia di eventi per l'argomento personalizzato configurato come destinazione finale per i messaggi indirizzati tramite MQTT è stato eliminato. | Event Grid perde il messaggio MQTT destinato al routing. |
| TooManyRequests | Il numero di messaggi indirizzati MQTT al secondo supera il limite di pubblicazione per l'argomento personalizzato. | Griglia di eventi prova nuovamente a instradare il messaggio MQTT. |
| Errore del servizio | Errore imprevisto del server per ragioni operative di un server. | Griglia di eventi prova nuovamente a instradare il messaggio MQTT. |
Durante i tentativi, Griglia di eventi usa criteri di ripetizione con backoff esponenziale per il routing dei messaggi MQTT. Griglia di eventi ritenterà di consegnare secondo il seguente piano su base di miglior sforzo.
- 10 secondi
- 30 secondi
- 1 minuto
- 5 minuti
- 10 minuti
- 30 minuti
- 1 ora
- 3 ore
- 6 ore
- Ogni 12 ore
Se un messaggio MQTT instradato, messo in coda per una nuova consegna, viene recapitato correttamente, Event Grid tenta di rimuoverlo dalla coda dei tentativi per quanto possibile, ma potresti comunque ricevere messaggi duplicati.