Condividi tramite


Routing dei messaggi MQTT in Griglia di eventi di Azure

Griglia di eventi consente di instradare i messaggi MQTT verso servizi di Azure o ai webhook per un'ulteriore elaborazione. Di conseguenza, è possibile creare soluzioni end-to-end usando i dati IoT per l'analisi dei dati, l'archiviazione e le visualizzazioni, tra gli altri casi d'uso.

Diagramma del routing dei messaggi MQTT.

Come si usa la funzionalità di routing?

Il routing dei messaggi dei clienti verso un servizio di Azure o un endpoint personalizzato consente di ottimizzare i vantaggi di questi dati. Di seguito sono riportati alcuni dei numerosi casi d'uso per sfruttare questa funzionalità:

  • Analisi dei dati: estrarre e analizzare i messaggi instradati dai clienti per ottimizzare la soluzione. Ad esempio, analizzare i dati di telemetria dei computer per prevedere quando pianificare la manutenzione prima che si verifichino errori, per evitare ritardi e ulteriori danni.
  • Applicazioni serverless: attivare una funzione serverless in base ai messaggi instradati dai client. Ad esempio, quando un sensore di movimento rileva un movimento, invia una notifica al personale di sicurezza per risolvere il problema.
  • Visualizzazioni dei dati: creazione di visualizzazioni dei dati instradati dai client per rappresentare e comprendere facilmente i dati e per evidenziare tendenze e outlier.

Configurazione del routing:

La configurazione del routing consente di inviare tutti i messaggi MQTT dai client a un argomento dello spazio dei nomi di Griglia di eventi o a un argomento personalizzato di Griglia di eventi. Quando i messaggi si trovano nell'argomento, è possibile configurare una sottoscrizione di eventi per usare i messaggi dell'argomento. Per ottenere questa configurazione, seguire questa procedura generale:

  • Argomento dello spazio dei nomi come destinazione di routing:
    • Creare un argomento dello spazio dei nomi di Griglia di eventi in cui vengono instradati tutti i messaggi MQTT.
    • Creare una sottoscrizione di eventi di tipo push per instradare questi messaggi a uno dei servizi di Azure supportati o a un webhook personalizzato o una sottoscrizione di eventi di tipo queue per estrarre i messaggi direttamente dall'argomento dello spazio dei nomi attraverso l'applicazione.
    • Impostare la configurazione del routing facendo riferimento all'argomento creato nel primo passaggio.

Diagramma del routing dei messaggi MQTT agli argomenti dello spazio dei nomi.

Diagramma del routing dei messaggi MQTT agli argomenti personalizzati.

Nota

La disabilitazione dell'accesso alla rete pubblica nello spazio dei nomi causerà l'esito negativo 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 in ogni risorsa di Griglia di eventi, vedere Quote e limiti.

Termine di confronto Argomento spazio dei nomi Argomento personalizzato
Velocità effettiva Elevato, fino a 40 MB/s (in ingresso) e 80 MB/s (in uscita) Basso, fino a 5 MB/s (ingresso e uscita)
Recapito pull
Eseguire il push del recapito a Hub eventi
Distribuzione push ai servizi di Azure (funzioni, Webhook, code e argomenti di bus di servizio, connessioni ibride di inoltro e code di archiviazione)
Conservazione di messaggi 7 giorni 1 giorno
Requisito di assegnazione di ruolo Non necessario perché il broker MQTT e l'argomento dello spazio dei nomi si trovano nello stesso spazio dei nomi Obbligatorio poiché lo spazio dei nomi che ospita la funzionalità del broker MQTT e l'argomento personalizzato sono risorse diverse

Requisiti degli argomenti personalizzati di Griglia di eventi per il routing

L'argomento personalizzato di Griglia di eventi usato per il routing deve soddisfare i requisiti seguenti:

  • Deve essere impostato per usare lo schema di eventi cloud v1.0
  • Deve trovarsi nella stessa area dello spazio dei nomi.
  • È necessario assegnare il ruolo "Mittente dati griglia di eventi" a se stessi o all'identità gestita selezionata nell'argomento personalizzato di Griglia di eventi prima dell'applicazione della configurazione di routing.
    • Nel portale passare alla risorsa dell'argomento Griglia di eventi creata.
    • Nella voce di menu "Controllo di accesso (IAM)" selezionare Aggiungi un'assegnazione di ruolo.
    • Nella scheda "Ruolo" selezionare "Mittente dati Griglia di eventi", quindi selezionare Avanti.
    • Nella scheda "Membri" selezionare +Seleziona membri, quindi digitare il nome utente di AD nella casella "Seleziona" visualizzata (ad esempio, user@contoso.com).
    • Selezionare il nome utente di AD, quindi selezionare "Rivedi e assegna"

Configurazione del portale di Azure

Per configurare il routing, seguire questa procedura:

  • Passare allo spazio dei nomi nel portale di Azure.
  • In Routing selezionare Abilita routing.
  • In tipo di argomento, selezionare argomento spazio dei nomi o argomento personalizzato
  • In corrispondenza dell'argomento, selezionare l'argomento creato in cui vengono instradati tutti i messaggi MQTT.
  • Se è stato selezionato un argomento personalizzato, viene visualizzata la sezione Identità gestita per il recapito. Selezionare una delle opzioni seguenti per l'identità usata per autenticare il broker MQTT durante il recapito dei messaggi MQTT all'argomento personalizzato:
    • Nessuno: in questo caso, è necessario assegnare il ruolo "Mittente dati Griglia di eventi" a se stessi nell'argomento personalizzato.
    • Identità assegnata dal sistema: in questo caso, è necessario abilitare l'identità assegnata dal sistema nello spazio dei nomi come prerequisito e assegnare il ruolo "Mittente dati Griglia di eventi" all'identità assegnata dal sistema nell'argomento personalizzato.
    • Identità assegnata dall'utente: in questo caso, è necessario abilitare l'identità assegnata dall'utente nello spazio dei nomi come prerequisito e assegnare il ruolo "Mittente dati Griglia di eventi" all'identità selezionata nell'argomento personalizzato.
      • Se è stata selezionata l'identità assegnata dall'utente, viene visualizzato un elenco a discesa che consente di selezionare l'identità desiderata.
  • Selezionare Applica.

Screenshot che mostra la configurazione del routing tramite il portale.

Per le istruzioni di configurazione degli arricchimenti, passare a 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", //Allowed values: None, SystemAssigned, UserAssigned
                "userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>" //needed only if UserAssigned was the value of type
            },

	}
}

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 agli argomenti personalizzati, Griglia di eventi fornisce un recapito durevole durante il tentativo di recapitare ogni messaggio almeno una volta immediatamente. In caso di errore, Griglia di eventi ritenta il recapito o elimina il messaggio che doveva essere instradato. Griglia di eventi non garantisce l'ordine di recapito degli eventi, quindi i sottoscrittori potrebbero riceverli in ordine sparso.

Nella tabella seguente viene descritto il comportamento del routing dei messaggi MQTT in base a errori diversi.

Error Descrizione errore Comportamento
TopicNotFoundError L'argomento personalizzato configurato per ricevere tutti i messaggi MQTT instradati è stato eliminato. Griglia di eventi elimina il messaggio MQTT che doveva essere instradato.
AuthenticationError Il ruolo Mittente dati Griglia di eventi per l'argomento personalizzato configurato come destinazione per i messaggi MQTT instradati è stato eliminato. Griglia di eventi elimina il messaggio MQTT che doveva essere instradato.
TooManyRequests Il numero di messaggi MQTT instradati al secondo supera il limite di pubblicazione per l'argomento personalizzato. Griglia di eventi ritenta il routing del messaggio MQTT.
ServiceError Errore imprevisto del server per il motivo operativo di un server. Griglia di eventi ritenta il routing del messaggio MQTT.

Durante i tentativi, Griglia di eventi usa un criterio di ripetizione dei tentativi di backoff esponenziale per il routing dei messaggi MQTT. Griglia di eventi ritenta il recapito in base alla pianificazione seguente in base al miglior impegno:

  • 10 secondi
  • 30 secondi
  • 1 minuto
  • 5 minuti
  • 10 minuti
  • 30 minuti
  • 1 ora
  • 3 ora
  • 6 ore
  • Ogni 12 ore

Se un messaggio MQTT instradato che è stato messo in coda per la ridistribuzione ha avuto esito positivo, Griglia di eventi tenta di rimuovere il messaggio dalla coda retry con il massimo impegno, ma è possibile che vengano ricevuti dei duplicati.

Passaggi successivi:

Per altre informazioni sul routing, vedere gli articoli seguenti:

Avvio rapido:

Concetti: