Weiterleiten von Azure Digital Twins-Ereignissen

In diesem Artikel wird der Prozess beschrieben, den Azure Digital Twins zum Senden von Ereignisdaten verwendet, sowohl zum internen Routing von Ereignissen innerhalb von Azure Digital Twins als auch zum externen Senden von Ereignisdaten an Downstreamdienste oder verbundene Computeressourcen außerhalb des Diensts.

Das Routing von Ereignisbenachrichtigungen von Azure Digital Twins ist ein zweistufiger Prozess: Erstellen von Endpunkten und anschließendes Erstellen von Ereignisrouten zum Senden von Daten an diese Endpunkte. In diesem Artikel werden die einzelnen Konzepte ausführlicher erläutert. Außerdem wird erläutert, was geschieht, wenn ein Endpunkt ein Ereignis nicht rechtzeitig zustellt (als Unzustellbare Nachricht bezeichnet).

Übersicht über das Ereignisrouting

Es gibt zwei Hauptszenarien zum Senden von Azure Digital Twins-Daten. Für beide werden Ereignisrouten verwendet:

  • Der erste Fall ist das Senden von Ereignisdaten von einem Zwilling im Azure Digital Twins-Graph an einen anderen. Wenn sich beispielsweise eine Eigenschaft in einem digitalen Zwilling ändert, sollten Sie einen anderen digitalen Zwilling im Hinblick auf die aktualisierten Daten benachrichtigen und aktualisieren.
  • Der zweite Fall ist das Senden von Daten außerhalb von Azure Digital Twins an Downstreamdatendienste zur weiteren Speicherung oder Verarbeitung. Wenn Sie beispielsweise bereits Azure Maps verwenden, möchten Sie möglicherweise Azure Digital Twins-Daten beitragen, um Ihre Lösung mit integrierten Modellierungen oder Abfragen zu verbessern.

Für jedes Ereignisziel funktioniert eine Ereignisroute durch Senden von Ereignisdaten von Azure Digital Twins an benutzerdefinierte Endpunkte in Ihren Abonnements. Derzeit werden drei Azure-Dienste für Endpunkte unterstützt: Event Hubs, Event Grid und Service Bus. Jeder dieser Azure-Dienste kann mit anderen Diensten verbunden werden und fungiert als Mittelsmann, der Daten an endgültige Ziele wie Azure Maps oder bei abhängigen Graphaktualisierungen zurück an Azure Digital Twins sendet.

Das folgende Diagramm veranschaulicht den Flow von Ereignisdaten durch eine größere IoT-Lösung, der das Senden von Azure Digital Twins-Daten über Endpunkte an andere Azure Services sowie zurück an Azure Digital Twins umfasst:

Diagramm der Weiterleitung von Daten aus Azure Digital Twins über Endpunkte an mehrere Downstreamdienste.

Für ausgehende Daten außerhalb von Azure Digital Twins sind typische Downstreamziele für Ereignisrouten Time Series Insights, Azure Maps sowie Speicher- und Analyselösungen. Azure Digital Twins implementiert die mindestens einmalige Zustellung für Daten, die an ausgehende Dienste ausgegeben werden.

Um interne Ereignisse digitaler Zwillinge innerhalb derselben Azure Digital Twins-Lösung weiterzuleiten, fahren Sie mit dem nächsten Abschnitt fort.

Weiterleiten interner Ereignisse digitaler Zwillinge

Ereignisrouten werden als Mechanismus für die Behandlung von Ereignissen innerhalb des Zwillingsgraphen verwendet. Dabei werden Daten zwischen digitalen Zwillingen gesendet. Diese Art der Ereignisverarbeitung erfolgt durch Herstellen einer Verbindung zwischen Ereignisrouten und Computeressourcen wie Azure Functions über Event Grid. Diese Funktionen definieren dann, wie Zwillinge Ereignisse empfangen und auf diese reagieren sollen.

Wenn eine Computeressource den Zwillingsgraphen auf Grundlage eines über die Ereignisroute empfangenen Ereignisses ändern möchte, ist es hilfreich, wenn sie im Voraus weiß, welcher Zwilling geändert werden soll. Die Ereignisnachricht enthält auch die ID des Quellzwillings, der sie gesendet hat, sodass die Computeressource Abfragen verwenden oder Beziehungen durchlaufen kann, um einen Zielzwilling für den gewünschten Vorgang zu finden.

Darüber hinaus muss die Computeressource Sicherheits -und Zugriffsberechtigungen unabhängig einrichten.

Eine Anleitung für das Einrichten einer Azure-Funktion zum Verarbeiten von Ereignissen für digitale Zwillinge finden Sie unter Einrichten der Verarbeitung von Ereignissen zwischen Zwillingen.

Erstellen von Endpunkten

Entwickler müssen erst Endpunkte definieren, um eine Ereignisroute definieren zu können. Ein Endpunkt ist ein Ziel außerhalb von Azure Digital Twins, das eine Routenverbindung unterstützt. Unterstützte Ziele sind beispielsweise:

  • Benutzerdefinierte Event Grid-Themen
  • Event Hubs
  • Service Bus

Sie können die REST-APIs von Azure Digital Twins, CLI-Befehle oder das Azure-Portal verwenden, um einen Endpunkt zu erstellen.

Beim Definieren eines Endpunkts müssen Sie Folgendes angeben:

  • Name des Endpunkts
  • Endpunkttyp (Event Grid, Event Hubs oder Service Bus)
  • Primäre und sekundäre Verbindungszeichenfolge für die Authentifizierung
  • Themenpfad des Endpunkts, z. B. your-topic.westus2.eventgrid.azure.net

Optional können Sie Ihren Endpunkt mit identitätsbasierter Authentifizierung erstellen, um den Endpunkt mit einer systemseitig oder benutzerseitig zugewiesenen verwalteten Identität zu verwenden. Diese Option ist nur für Event Hubs- und Service Bus-Endpunkte verfügbar. (Für Event Grid wird sie nicht unterstützt.)

In der Steuerungsebene sind Endpunkt-APIs für Folgendes verfügbar:

  • Endpunkt erstellen
  • Abrufen einer Liste mit Endpunkten
  • Abrufen von Endpunkten nach Name
  • Löschen von Endpunkten nach Name

Ausführliche Anweisungen zum Erstellen eines Endpunkts finden Sie unter Erstellen von Endpunkten.

Erstellen von Ereignisrouten

Zum Erstellen einer Ereignisroute können Sie die Azure Digital Twins-REST-APIs, CLI-Befehle oder die Azure-Portal verwenden.

Im Folgenden finden Sie ein Beispiel für das Erstellen einer Ereignisroute in einer Clientanwendung mithilfe des CreateOrReplaceEventRouteAsync.NET (C#) SDK-Aufrufs :

string eventFilter = "$eventType = 'DigitalTwinTelemetryMessages' or $eventType = 'DigitalTwinLifecycleNotification'";
var er = new DigitalTwinsEventRoute("endpointName", eventFilter);
await client.CreateOrReplaceEventRouteAsync("routeId", er);
  1. Zunächst wird ein DigitalTwinsEventRoute-Objekt erstellt, und der-Konstruktor nimmt den Namen eines Endpunkts an. Dieses endpointName-Feld identifiziert einen Endpunkt, z. B. einen Event Hub, ein Event Grid oder einen Service Bus. Diese Endpunkte müssen vor diesem Registrierungsaufruf in Ihrem Abonnement erstellt und mithilfe von Steuerungsebenen-APIs an Azure Digital Twins angehängt werden.

  2. Das Ereignisroutenobjekt verwendet auch ein Feld Filter, das zum Einschränken der Arten von Ereignissen für diese Route verwendet werden kann. Ein Filter true aktiviert die Route ohne zusätzliche Filterung (ein Filter mit dem Wert false deaktiviert die Route).

  3. Dieses Ereignisroutenobjekt wird dann zusammen mit einem Namen für die Route an CreateOrReplaceEventRouteAsync übergeben.

Tipp

Alle SDK-Funktionen sind in synchronen und asynchronen Versionen enthalten.

Ausführliche Anweisungen zum Erstellen von Ereignisrouten finden Sie unter Erstellen von Routen und Filtern.

„Unzustellbare Nachrichten“-Ereignisse

Wenn ein Endpunkt ein Ereignis innerhalb eines bestimmten Zeitraums oder nach mehreren Übermittlungsversuchen nicht übermitteln kann, kann er das nicht übermittelte Ereignis an ein Speicherkonto senden. Dieser Prozess wird als Speicherung unzustellbarer Nachrichten bezeichnet. Von Azure Digital Twins wird ein Ereignis als unzustellbar betrachtet, wenn eine der folgenden Bedingungen erfüllt ist:

  • Das Ereignis wird nicht innerhalb der Gültigkeitsdauer übermittelt.
  • Die Anzahl der Übermittlungsversuche hat den Grenzwert überschritten.

Wenn eine der Bedingungen erfüllt ist, wird das Ereignis gelöscht oder als unzustellbare Nachricht gespeichert. Endpunkte aktivieren unzustellbare Nachrichten standardmäßig nicht. Wenn Sie das Feature aktivieren möchten, müssen Sie bei der Erstellung des Endpunkts ein Speicherkonto zum Speichern nicht übermittelter Ereignisse angeben. Ereignisse werden dann aus diesem Speicherkonto gepullt, um Übermittlungsprobleme zu beheben.

Wenn Sie den Speicherort für unzustellbare Nachrichten festlegen möchten, benötigen Sie ein Speicherkonto mit einem Container. Sie geben die URL für diesen Container an, wenn Sie den Endpunkt erstellen. Die unzustellbaren Nachrichten werden als Container-URL mit einem SAS-Token bereitgestellt. Dieses Token benötigt nur die write-Berechtigung für den Zielcontainer innerhalb des Speicherkontos. Die vollständig formatierte URL weist das folgende Format auf: https://<storage-account-name>.blob.core.windows.net/<container-name>?<SAS-token>

Weitere Informationen zu SAS-Token finden Sie hier: Gewähren von eingeschränktem Zugriff auf Azure Storage-Ressourcen mithilfe von SAS (Shared Access Signature)

Informationen zum Einrichten eines Endpunkts mit Unzustellbare Nachrichten finden Sie unter Endpunktoptionen: Unzustellbare Nachrichten.

Arten von Ereignisnachrichten

Verschiedene Arten von Ereignissen in IoT Hub und Azure Digital Twins führen zu verschiedenen Arten von Benachrichtigungsmeldungen, wie unten beschrieben.

Benachrichtigungstyp Name der Routingquelle Generiert von...
Änderungsbenachrichtigung bei digitalen Zwillingen Änderungsbenachrichtigung bei digitalen Zwillingen beliebige Eigenschaftenänderung bei digitalen Zwillingen
Lebenszyklusbenachrichtigung bei digitalen Zwillingen Lebenszyklusbenachrichtigung bei digitalen Zwillingen jeder Vorgang zum Erstellen oder Löschen von digitalen Zwillingen
Benachrichtigung zur Beziehungsänderung bei digitalen Zwillingen Benachrichtigung zur Beziehungsänderung bei digitalen Zwillingen beliebige Änderung der Beziehung digitaler Zwillinge
Telemetrienachrichten für digitale Zwillinge Telemetrienachrichten beliebige Telemetrienachricht

Nächste Schritte

Fahren Sie mit den Schrittanleitungen zum Einrichten von Endpunkten und Ereignisrouten fort:

Oder folgen Sie dieser exemplarischen Vorgehensweise, um eine Azure-Funktion für die Verarbeitung von Ereignissen zwischen Zwillingen in Azure Digital Twins einzurichten: