Verwenden des IoT Hub-Nachrichtenroutings zum Senden von D2C-Nachrichten an Azure-Dienste

Das Nachrichtenrouting ermöglicht es Ihnen, Nachrichten automatisiert, skalierbar und zuverlässig von Ihren Geräten an Clouddienste zu senden. Das Nachrichtenrouting kann für Folgendes verwendet werden:

  • Senden von Gerätetelemetrienachrichten und -ereignissen an den integrierten Endpunkt und an benutzerdefinierte Endpunkte. Zu den Ereignissen, die weitergeleitet werden können, gehören Gerätelebenszyklus-Ereignisse, Änderungsereignisse von Gerätezwillingen, Änderungsereignisse digitaler Zwillinge und Geräteverbindungsstatus-Ereignisse.

  • Filtern von Daten, bevor Sie sie weiterleiten, indem Sie umfangreiche Abfragen anwenden. Mithilfe des Nachrichtenroutings können Sie Abfragen für Nachrichteneigenschaften und Nachrichtentext sowie für Gerätezwillingstags und Gerätezwillingseigenschaften durchführen. Weitere Informationen finden Sie unter Abfragen im Nachrichtenrouting.

Der IoT Hub definiert ein gemeinsames Format für alle Gerät-zu-Cloud-Nachrichten, um Interoperabilität zwischen Protokollen zu ermöglichen. Weitere Informationen finden Sie unter Erstellen und Lesen von IoT Hub-Nachrichten.

Hinweis

Einige der in diesem Artikel erwähnten Features (wie Cloud-zu-Gerät-Messaging, Gerätezwillinge und Geräteverwaltung) stehen nur im Standard-Tarif von IoT Hub zur Verfügung. Weitere Informationen zu den IoT Hub-Tarifen „Basic“ und „Standard/Free“ finden Sie unter Wählen des richtigen IoT Hub-Tarifs für Ihre Lösung.

Routingendpunkte

Jeder IoT-Hub verfügt über einen standardmäßigen Routing-Endpunkt, der messages/events heißt, der mit Event Hubs kompatibel ist. Sie können auch benutzerdefinierte Endpunkte erstellen, die auf andere Dienste in Ihrem Azure-Abonnement verweisen.

IoT Hub unterstützt derzeit folgende Endpunkte für Nachrichtennrouting:

  • Integrierter Endpunkt
  • Speichercontainer
  • Service Bus-Warteschlangen
  • Service Bus-Themen
  • Event Hubs
  • Cosmos DB

Weitere Informationen zu jedem dieser Endpunkte finden Sie unter IoT Hub-Endpunkte.

Jede Nachricht wird an alle Endpunkte weitergeleitet, deren Routinganfragen sie entspricht, was bedeutet, dass eine Meldung an mehrere Endpunkte weitergeleitet werden kann. Wenn jedoch eine Nachricht mehreren Routen entspricht, die auf den gleichen Endpunkt verweisen, übermittelt IoT Hub die Nachricht nur einmal an diesen Endpunkt.

IoT Hub benötigt Schreibzugriff auf diese Dienstendpunkte, damit das Nachrichtenrouting funktioniert. Wenn Sie Ihre Endpunkte über das Azure-Portal konfigurieren, werden die erforderlichen Berechtigungen für Sie hinzugefügt. Wenn Sie Ihre Endpunkte mithilfe von PowerShell oder der Azure CLI konfigurieren, müssen Sie die Schreibzugriffsberechtigung bereitstellen.

Wie Sie Endpunkte erstellen können, erfahren Sie in den folgenden Artikeln:

Stellen Sie sicher, dass Sie Ihre Dienste zur Unterstützung des erwarteten Durchsatzes konfigurieren. Wenn Sie beispielsweise Event Hubs als benutzerdefinierten Endpunkt verwenden, müssen Sie die Durchsatzeinheiten für diesen Event Hub so konfigurieren, dass er den Eingang von Ereignissen behandeln kann, die Sie über IoT Hub-Nachrichtenrouting senden möchten. Wenn Sie eine Service Bus-Warteschlange als Endpunkt verwenden, müssen Sie auch die maximale Größe konfigurieren, damit die Warteschlange alle eingegangenen Daten so lange aufnehmen kann, bis sie von Consumern ausgehen. Nach der Erstkonfiguration Ihrer IoT-Lösung müssen Sie möglicherweise Ihre zusätzlichen Endpunkte überwachen und ggf. Anpassungen an die tatsächliche Last vornehmen.

Wenn Ihr benutzerdefinierter Endpunkt über Firewallkonfigurationen verfügt, sollten Sie die Ausnahme vertrauenswürdiger Microsoft-Erstanbieter verwenden.

Weiterleiten an einen Endpunkt in einem anderen Abonnement

Wenn sich die Endpunktressource in einem anderen Abonnement als Ihr IoT-Hub befindet, müssen Sie den Hub als vertrauenswürdigen Microsoft-Dienst konfigurieren, bevor Sie einen benutzerdefinierten Endpunkt erstellen. Wenn Sie den benutzerdefinierten Endpunkt erstellen, legen Sie den Authentifizierungstyp auf eine benutzerseitig zugewiesene Identität fest.

Weitere Informationen finden Sie unter Ausgehende Konnektivität von IoT Hub zu anderen Azure-Ressourcen.

Routingabfragen

IoT Hub-Nachrichtenrouting verfügt über eine Abfragefunktion zum Filtern der Daten, bevor diese an die Endpunkte weitergeleitet werden. Jede Routingabfrage, die Sie konfigurieren, hat die folgenden Eigenschaften:

Eigenschaft Beschreibung
Name Der eindeutige Name, mit dem die Abfrage identifiziert wird.
Quelle Der Ursprung des zu verarbeitenden Datenstroms. Beispiel: Gerätetelemetrie.
Condition Der Abfrageausdruck für die Routingabfrage, die für die Eigenschaften der Nachrichtenanwendung, Systemeigenschaften, den Nachrichtentext, Gerätezwillingstags und Gerätezwillingseigenschaften ausgeführt wird, um zu ermitteln, ob es sich um eine Übereinstimmung für den Endpunkt handelt.
Endpunkt Der Name des Endpunkts, an den vom IoT Hub diejenigen Nachrichten gesendet werden, für die sich eine Übereinstimmung mit der Abfrage ergeben hat. Es wird empfohlen, einen Endpunkt in derselben Region zu wählen, in der sich auch Ihr IoT-Hub befindet.

Es kann vorkommen, dass sich für eine einzelne Nachricht Übereinstimmungen mit den Bedingungen mehrerer Routingabfragen ergeben. In diesem Fall sendet der IoT-Hub die Nachricht jeweils an alle Endpunkte, die den entsprechenden Abfragen zugeordnet sind. IoT Hub führt bei der Nachrichtenzustellung eine automatische Deduplizierung durch. Wenn also eine Nachricht mit mehreren Abfragen mit demselben Ziel übereinstimmt, wird sie nur einmal in das Ziel geschrieben.

Weitere Informationen finden Sie unter Abfragesyntax von IoT Hub-Nachrichtenrouting.

Lesen weitergeleiteter Daten

In den folgenden Artikeln erfahren Sie, wie Sie Nachrichten aus einem Endpunkt lesen.

Fallbackroute

Die Fallbackroute sendet alle Nachrichten, die die Abfragebedingungen für eine der vorhandenen Routen nicht erfüllen, an den integrierten Endpunkt (messages/events), der mit Event Hubs kompatibel ist. Wenn das Nachrichtenrouting aktiviert ist, können Sie die Funktionalität der Fallbackroute aktivieren. Sobald eine Route erstellt wird, werden keine Daten mehr an den integrierten Endpunkt gesendet, es sei denn, eine Route zu diesem Endpunkt wird erstellt. Wenn es keine Routen zum integrierten Endpunkt gibt und eine Fallbackroute aktiviert wurde, werden nur Nachrichten, die keinen Abfragebedingungen für Routen entsprechen, an den integrierten Endpunkt gesendet. Auch wenn alle vorhandenen Routen gelöscht wurden, muss die Funktionalität der Fallbackroute aktiviert werden, um alle Daten im integrierten Endpunkt empfangen zu können.

Sie können die Fallbackroute im Azure-Portal auf dem Blatt Nachrichtenrouting aktivieren oder deaktivieren. Sie können auch Azure Resource Manager für FallbackRouteProperties zur Nutzung eines benutzerdefinierten Endpunkts für die Fallbackroute verwenden.

Nicht telemetriebezogene Ereignisse

Zusätzlich zur Gerätetelemetrie ermöglicht das Nachrichtenrouting auch das Senden von nicht telemetriebezogenen Ereignissen, darunter:

  • Änderungsereignisse für Gerätezwillinge
  • Ereignisse im Gerätelebenszyklus
  • Ereignisse im Auftragslebenszyklus von Geräten
  • Änderungsereignisse bei digitalen Zwillingen
  • Geräteverbindungsstatus-Ereignisse

Wenn beispielsweise eine Route erstellt wird, deren Datenquelle auf Änderungsereignisse für Gerätezwillinge festgelegt wurde, sendet IoT Hub Nachrichten an den Endpunkt, der die Änderung im Gerätezwilling enthält. Ebenso gilt: Wenn eine Route erstellt wird, deren Datenquelle auf Ereignisse im Gerätelebenszyklus festgelegt wurde, sendet IoT Hub eine Nachricht mit der Angabe, ob das Gerät oder Modul erstellt oder aber gelöscht wurde. Weitere Informationen zu Lebenszyklusereignissen von Geräten finden Sie unter Lebenszyklusbenachrichtigungen für Geräte und Module.

Bei Verwendung von Azure IoT Plug & Play kann ein Entwickler Routen erstellen, deren Datenquelle auf Änderungsereignisse bei digitalen Zwillingen festgelegt wurde. Dann sendet IoT Hub Nachrichten, wenn eine Eigenschaft des digitalen Zwillings festgelegt oder geändert wird, ein digitaler Zwilling ersetzt wird oder beim zugrunde liegenden Gerätezwilling ein Änderungsereignis eintritt. Und schließlich: Wenn eine Route erstellt wird, deren Datenquelle auf Ereignisse beim Geräteverbindungsstatus festgelegt wurde, sendet IoT Hub eine Nachricht mit der Angabe, ob das Gerät verbunden oder die Verbindung getrennt wurde.

IoT Hub lässt sich auch in Azure Event Grid integrieren, um Geräteereignisse zu veröffentlichen und so Echtzeitintegrationen und die Automatisierung von Workflows basierend auf diesen Ereignissen zu unterstützen. Informationen dazu, welche Methode sich am besten für Ihr Szenario eignet, finden Sie unter Vergleichen von Nachrichtenweiterleitung und Event Grid für IoT Hub.

Einschränkungen für Ereignisse beim Geräteverbindungsstatus

Geräteverbindungsstatusereignisse sind für Geräte verfügbar, die eine Verbindung entweder über das MQTT- oder das AMQP-Protokoll herstellen oder eines dieser Protokolle über WebSockets verwenden. Anforderungen, die nur mit HTTPS gesendet werden, lösen keine Benachrichtigungen zum Geräteverbindungsstatus aus. Damit IoT Hub mit dem Senden von Ereignissen zum Geräteverbindungsstatus beginnen kann, muss ein Gerät nach dem Öffnen einer Verbindung entweder den Vorgang Cloud-zu-Gerät-Nachrichten empfangen oder den Vorgang Gerät-zu-Cloud-Telemetriedaten senden aufrufen. Außerhalb der Azure IoT SDKs sind diese Vorgänge in MQTT den Vorgängen „SUBSCRIBE“ oder „PUBLISH“ für die entsprechenden Messagingthemen gleichzusetzen. Bei AMQP entsprechen diese Vorgänge dem Anfügen oder Übertragen einer Nachricht über die entsprechenden Linkpfade. Weitere Informationen finden Sie in den folgenden Artikeln:

IoT Hub meldet nicht jedes einzelne Erignis der Typen Geräteverbindung und -trennung, sondern veröffentlicht stattdessen den aktuellen Verbindungsstatus, der in einer regelmäßigen Momentaufnahme von 60 Sekunden erstellt wird. Der Empfang von entweder demselben Verbindungsstatusereignis mit unterschiedlichen Folgenummern oder von verschiedenen Verbindungsstatusereignissen bedeutet jeweils, dass sich der Geräteverbindungsstatus während des 60-Sekunden-Fensters geändert hat.

Testrouten

Wenn Sie eine neue Route erstellen oder eine vorhandene Route bearbeiten, sollten Sie die Routenabfrage mit einer Beispielnachricht testen. Sie können einzelne Routen oder alle Routen gleichzeitig testen. Während des Tests werden keine Nachrichten an die Endpunkte weitergeleitet. Zum Testen können Sie das Azure-Portal, Azure Resource Manager, Azure PowerShell oder die Azure CLI verwenden. Anhand der Ausgaben können Sie identifizieren, ob die Beispielnachricht der Abfrage entsprach oder nicht oder aber ob der Test nicht ausgeführt werden konnte, weil die Beispielnachricht oder Abfragesyntax falsch ist. Weitere Informationen finden Sie unter Testen einer Route und Testen aller Routen.

Latency

Wenn Sie Gerät-zu-Cloud-Telemetrienachrichten weiterleiten, kommt es nach der Erstellung der ersten Route zu einer leichten Erhöhung der End-to-End-Latenz.

In den meisten Fällen beträgt der durchschnittliche Latenzanstieg weniger als 500 Millisekunden. Die Latenz, die Sie feststellen, kann jedoch variieren und je nach Ebene Ihres IoT-Hubs und Ihrer Lösungsarchitektur höher sein. Sie können die Latenz mithilfe der IoT Hub-Metriken Routing: Nachrichtenlatenz für „messages/events“ oder d2c.endpoints.latency.builtIn.events überwachen. Das Erstellen oder Löschen einer beliebigen Route nach der ersten Route hat keine Auswirkung auf die End-to-End-Latenz.

Überwachung und Problembehandlung

IoT Hub bietet mehrere Metriken in Bezug auf Routing und Endpunkte, um Ihnen einen Überblick über die Integrität Ihres Hubs und der gesendeten Nachrichten zu verschaffen. Mit der Kategorie Routenplanung in den IoT Hub-Ressourcenprotokollen können Sie auch Fehler bei der Auswertung einer Routingabfrage und der Endpunktintegrität nachverfolgen, die von IoT Hub registriert werden. Weitere Informationen zur Verwendung von Metriken und Ressourcenprotokollen bei IoT Hub finden Sie unter Überwachen von Azure IoT Hub.

Sie können mithilfe der REST-API Get Endpoint Health (Endpunktintegrität abrufen) den Integritätsstatus der Endpunkte abrufen.

Im Leitfaden zur Problembehandlung beim Routing finden Sie weitere Informationen und Unterstützung bei der Behandlung von Routingproblemen.