Instradare gli eventi di Gemelli digitali di Azure

Questo articolo descrive il processo usato da Gemelli digitali di Azure per inviare i dati degli eventi, sia per il routing degli eventi internamente all'interno di Gemelli digitali di Azure, sia per l'invio di dati degli eventi esternamente a servizi downstream o risorse di calcolo connesse all'esterno del servizio.

Il routing delle notifiche degli eventi da Gemelli digitali di Azure è un processo in due passaggi: creare endpoint, quindi creare route di eventi per inviare dati a tali endpoint. Questo articolo illustra in modo più dettagliato ognuno di questi concetti. Spiega anche cosa accade quando un endpoint non riesce a recapitare un evento nel tempo (un processo noto come dead lettering).

Panoramica del routing degli eventi

Esistono due scenari principali per l'invio di dati di Gemelli digitali di Azure e le route di eventi vengono usate per eseguire entrambe le operazioni:

  • Invio di dati dell'evento da un gemello nel grafo di Gemelli digitali di Azure a un altro. Ad esempio, quando viene modificata una proprietà di un gemello digitale, è possibile inviare una notifica e aggiornare un altro gemello digitale in base ai dati aggiornati.
  • Invio di dati all'esterno di Gemelli digitali di Azure ai servizi dati downstream per un'ulteriore archiviazione o elaborazione. Ad esempio, se si usa già Mappe di Azure, è possibile contribuire ai dati di Gemelli digitali di Azure per migliorare la soluzione con la modellazione integrata o le query.

Per qualsiasi destinazione evento, una route di eventi funziona inviando i dati dell'evento da Gemelli digitali di Azure a endpoint personalizzati nelle sottoscrizioni. Sono attualmente supportati tre servizi di Azure per gli endpoint: Hub eventi, Griglia di eventi e bus di servizio. Ognuno di questi servizi di Azure può essere connesso ad altri servizi e funge da middleman, inviando dati a destinazioni finali, ad esempio Mappe di Azure o di nuovo in Gemelli digitali di Azure per gli aggiornamenti dipendenti del grafo.

Il diagramma seguente illustra il flusso dei dati degli eventi tramite una soluzione IoT più grande, che include l'invio di dati di Gemelli digitali di Azure tramite endpoint ad altri servizi di Azure, nonché di nuovo in Gemelli digitali di Azure:

Diagramma di Gemelli digitali di Azure che instrada i dati tramite endpoint a diversi servizi downstream.

Per i dati in uscita all'esterno di Gemelli digitali di Azure, le destinazioni downstream tipiche per le route di eventi sono Time Series Insights, Mappe di Azure, archiviazione e soluzioni di analisi. Gemelli digitali di Azure implementa almeno una volta il recapito per i dati generati ai servizi in uscita.

Per il routing degli eventi interni del gemello digitale nella stessa soluzione gemelli digitali di Azure, passare alla sezione successiva.

Instradare gli eventi interni del gemello digitale

Le route di eventi sono il meccanismo usato per la gestione degli eventi all'interno del grafico dei gemelli, inviando dati da gemelli digitali a gemelli digitali. Questo tipo di gestione degli eventi viene eseguito connettendo le route di eventi tramite Griglia di eventi alle risorse di calcolo, ad esempio Funzioni di Azure. Queste funzioni definiscono quindi il modo in cui i gemelli devono ricevere e rispondere agli eventi.

Quando una risorsa di calcolo vuole modificare il grafico dei gemelli in base a un evento ricevuto tramite route eventi, è utile sapere in anticipo quale gemello deve modificare. Il messaggio di evento contiene anche l'ID del gemello di origine che ha inviato il messaggio, in modo che la risorsa di calcolo possa usare query o attraversare relazioni per trovare un gemello di destinazione per l'operazione desiderata.

La risorsa di calcolo deve anche stabilire le autorizzazioni di sicurezza e accesso in modo indipendente.

Per informazioni dettagliate sul processo di configurazione di una funzione di Azure per elaborare gli eventi di gemelli digitali, vedere Configurare la gestione degli eventi da gemello a gemello.

Creazione di endpoint

Per definire una route eventi, gli sviluppatori devono innanzitutto definire gli endpoint. Un endpoint è una destinazione esterna a Gemelli digitali di Azure che supporta una connessione di route. Le destinazioni supportate includono:

  • Argomenti personalizzati di Griglia di eventi
  • Hub eventi
  • Bus di servizio

Per creare un endpoint, è possibile usare le API REST di Gemelli digitali di Azure, i comandi dell'interfaccia della riga di comando o la portale di Azure.

Quando si definisce un endpoint, è necessario fornire:

  • Nome dell'endpoint
  • Tipo di endpoint (Griglia di eventi, Hub eventi o bus di servizio)
  • Stringa di connessione primaria e stringa di connessione secondaria per l'autenticazione
  • Percorso dell'argomento dell'endpoint, ad esempio your-topic.westus2.eventgrid.azure.net

Facoltativamente, è possibile scegliere di creare l'endpoint con l'autenticazione basata sull'identità per usare l'endpoint con un'identità gestita assegnata dal sistema o assegnata dall'utente. Questa opzione è disponibile solo per Hub eventi e endpoint di tipo bus di servizio (non è supportato per Griglia di eventi).

Le API endpoint disponibili nel piano di controllo sono:

  • Creare un endpoint
  • Ottenere l'elenco degli endpoint
  • Ottenere l'endpoint in base al nome
  • Eliminare l'endpoint in base al nome

Per istruzioni dettagliate sulla creazione di un endpoint, vedere Creare endpoint.

Creazione di route di eventi

Per creare una route di eventi, è possibile usare le API REST di Gemelli digitali di Azure, i comandi dell'interfaccia della riga di comando o la portale di Azure.

Ecco un esempio di creazione di una route di eventi all'interno di un'applicazione client usando la CreateOrReplaceEventRouteAsync chiamata .NET (C#) SDK:

string eventFilter = "$eventType = 'DigitalTwinTelemetryMessages' or $eventType = 'DigitalTwinLifecycleNotification'";
var er = new DigitalTwinsEventRoute("endpointName", eventFilter);
await client.CreateOrReplaceEventRouteAsync("routeId", er);
  1. Prima di tutto, viene creato un DigitalTwinsEventRoute oggetto e il costruttore accetta il nome di un endpoint. Questo endpointName campo identifica un endpoint, ad esempio Hub eventi, Griglia di eventi o bus di servizio. Questi endpoint devono essere creati nella sottoscrizione e collegati a Gemelli digitali di Azure usando le API del piano di controllo prima di effettuare questa chiamata di registrazione.

  2. L'oggetto route dell'evento include anche un campo Filter , che può essere usato per limitare i tipi di eventi che seguono questa route. Un filtro di true abilita la route senza filtri aggiuntivi (un filtro di false disabilita la route).

  3. Questo oggetto route di eventi viene quindi passato a , insieme a CreateOrReplaceEventRouteAsyncun nome per la route.

Suggerimento

Tutte le funzioni SDK sono disponibili in versioni sincrone e asincrone.

Per istruzioni dettagliate sulla creazione di route eventi, vedere Creare route e filtri.

Eventi relativi ai messaggi non recapitabili

Quando un endpoint non può recapitare un evento entro un determinato periodo di tempo o dopo aver tentato di recapitare l'evento più volte, può inviare l'evento non recapitato a un account di archiviazione. Questo processo è noto come inserimento nella coda di eventi non recapitabili. Gemelli digitali di Azure riceverà un evento non recapitabili quando viene soddisfatta una delle condizioni seguenti:

  • L'evento non viene recapitato entro il periodo di durata
  • Il numero di tentativi di recapito dell'evento ha superato il limite

Se viene soddisfatta una delle condizioni, l'evento viene eliminato o non inserito nella coda di eventi non recapitati. Per impostazione predefinita, ogni endpoint non attiva i messaggi non recapitabili. Per abilitarla, è necessario specificare un account di archiviazione per contenere eventi non recapitati durante la creazione dell'endpoint. È quindi possibile eseguire il pull degli eventi da questo account di archiviazione per risolvere i recapito.

Prima di impostare la posizione dei messaggi non recapitabili, è necessario avere un account di archiviazione con un contenitore. Quando si crea l'endpoint, si specifica l'URL per questo contenitore. Il non recapitabili viene fornito come URL del contenitore con un token di firma di accesso condiviso. Tale token richiede solo write l'autorizzazione per il contenitore di destinazione all'interno dell'account di archiviazione. L'URL completamente formato sarà nel formato seguente: https://<storage-account-name>.blob.core.windows.net/<container-name>?<SAS-token>

Per altre informazioni sui token di firma di accesso condiviso, vedere Concedere l'accesso limitato alle risorse di Archiviazione di Azure usando firme di accesso condiviso (SAS)

Per informazioni su come configurare un endpoint con messaggi non recapitabili, vedere Opzioni endpoint: messaggi non recapitabili.

Tipi di messaggi di evento

Diversi tipi di eventi in hub IoT e Gemelli digitali di Azure producono diversi tipi di messaggi di notifica, come descritto di seguito.

Tipo di notifica Nome di origine routing Generato da...
Notifica di modifica del gemello digitale Notifica di modifica del gemello digitale qualsiasi modifica della proprietà del gemello digitale
Notifica del ciclo di vita del gemello digitale Notifica del ciclo di vita del gemello digitale qualsiasi operazione di creazione o eliminazione di gemelli digitali
Notifica di modifica della relazione del gemello digitale Notifica di modifica della relazione del gemello digitale qualsiasi modifica della relazione con gemelli digitali
Messaggi di telemetria del gemello digitale Messaggi di telemetria qualsiasi messaggio di telemetria

Passaggi successivi

Continuare con le istruzioni dettagliate per la configurazione di endpoint e route di eventi:

In alternativa, seguire questa procedura dettagliata per configurare una funzione di Azure per la gestione degli eventi da gemello a gemello all'interno di Gemelli digitali di Azure: