Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Event Grid ermöglicht es Ihnen, Ihre MQTT-Nachrichten an Azure-Dienste oder Webhooks zur weiteren Verarbeitung weiterzuleiten. Durch das Routing dieser Daten können Sie End-to-End-Lösungen erstellen, die Ihre IoT-Daten für Analyse, Speicherung und Visualisierung nutzen.
Dieser Artikel erklärt, wann Routing verwendet werden sollte, und zeigt Ihnen, wie Sie Routing entweder für ein Event Grid Namespace-Thema oder ein benutzerdefiniertes Thema konfigurieren können.
Wann Routing verwendet werden sollte
Die Weiterleitung der Nachrichten von Ihren Kunden an einen Azure-Dienst oder Ihren benutzerdefinierten Endpunkt hilft Ihnen, die Vorteile dieser Daten optimal zu nutzen. Die folgende Liste beschreibt einige der vielen Anwendungsfälle für diese Funktion:
- Datenanalyse: Extrahieren und analysieren Sie die weitergeleiteten Nachrichten Ihrer Kunden, um Ihre Lösung zu optimieren. Analysieren Sie zum Beispiel die Telemetrie Ihrer Maschinen, um vorherzusagen, wann Wartungsarbeiten geplant werden sollten, bevor Fehler auftreten, um Verzögerungen und weitere Schäden zu vermeiden.
- Serverless-Anwendungen: Lösen Sie anhand der weitergeleiteten Nachrichten Ihrer Clients eine Serverless-Funktion aus. Wenn zum Beispiel ein Bewegungsmelder eine Bewegung erkennt, senden Sie eine Benachrichtigung an das Sicherheitspersonal, um diese zu adressieren.
- Datenvisualisierungen: Erstellen Sie Visualisierungen der gerouteten Daten Ihrer Kunden, um die Daten darzustellen und zu verstehen sowie Trends und Ausreißer hervorzuheben.
Konfigurieren des Routings
Die Routing-Konfiguration ermöglicht es, alle MQTT-Nachrichten von deinen Clients entweder an ein Event Grid Namespace-Thema oder ein Event Grid-benutzerdefiniertes Thema zu senden. Nachdem die Nachrichten im Thema sind, können Sie ein Ereignisabonnement konfigurieren, um die Nachrichten aus dem Thema zu konsumieren. Führen Sie die folgenden allgemeinen Schritte aus, um diese Konfiguration zu erreichen:
- Namespacethema als Routingziel:
- Erstellen Sie ein Event Grid Namespace-Thema, bei dem Event Grid alle MQTT-Nachrichten leitet.
- Erstellen Sie ein Push-Event-Abonnement, um diese Nachrichten an einen der unterstützten Azure-Dienste oder einen eigenen Webhook weiterzuleiten, oder erstellen Sie ein Warteschlangen-Event-Abonnement, um die Nachrichten direkt aus dem Namespace-Thema durch Ihre Anwendung zu ziehen.
- Setze die Routing-Konfiguration , die sich auf das Thema bezieht, das du im ersten Schritt erstellt hast.
- Benutzerdefiniertes Thema als Routingziel:
- Erstellen Sie ein benutzerdefiniertes Event Grid Thema, bei dem Event Grid alle MQTT-Nachrichten weiterleitet. Dieses Thema muss die benutzerdefinierten Anforderungen des Event Grid für Routing erfüllen.
- Erstellen Sie ein Ereignisraster-Ereignisabonnement , um diese Nachrichten an einen der unterstützten Azure-Dienste oder einen benutzerdefinierten Endpunkt weiterzuleiten.
- Setze die Routing-Konfiguration , die sich auf das Thema bezieht, das du im ersten Schritt erstellt hast.
Hinweis
Das Deaktivieren des öffentlichen Netzwerkzugriffs im Namensraum führt dazu, dass das MQTT-Routing fehlschlägt.
Unterschied zwischen Namespacethemen und benutzerdefinierten Themen als Routingziel
Die folgende Tabelle zeigt den Unterschied zwischen Namespacethemen und benutzerdefinierten Themen als Routingziel. Eine detaillierte Aufschlüsselung der Quoten und Grenzen, die jede Event Grid-Ressource umfasst, finden Sie unter Quoten und Grenzen.
| Vergleichspunkt | Namespace-Thema | Benutzerdefiniertes Thema |
|---|---|---|
| Durchsatz | Hoch, bis zu 40 MB/s (Eingang) und 80 MB/s (Ausgang) | Niedrig: bis zu 5 MB/s (Eingang und Ausgang) |
| Pull-Übermittlung | Ja | No |
| Pushübermittlung an Event Hubs | Ja | Ja |
| Push-Bereitstellung an Azure-Dienste (Funktionen, Webhooks, Service Bus-Warteschlangen und -Themen, hybride Relay-Verbindungen und Speicherwarteschlangen) | No | Ja |
| Nachrichtenaufbewahrung | 7 Tage | 1 Tag |
| Rollenzuweisungsanforderung | Nicht nötig, da der MQTT-Broker und das Namespace-Thema unter demselben Namespace liegen | Erforderlich, weil der Namespace, der die MQTT-Broker-Funktionalität hostet, und das benutzerdefinierte Thema unterschiedliche Ressourcen sind |
Anforderungen für benutzerdefinierte Event-Grid-Themen beim Routing
Das benutzerdefinierte Event Grid Thema, das Sie für Routing verwenden, muss folgende Anforderungen erfüllen:
- Es muss das CloudEvents-Schema v1.0 verwenden.
- Er muss sich in derselben Region wie der Namespace befinden.
- Sie müssen die Rolle des Event Grid Data Sender entweder selbst oder der ausgewählten verwalteten Identität im Event Grid Custom Topic zuweisen, bevor Sie die Routing-Konfiguration anwenden. Um die Rolle zuzuweisen:
- Im Portal gehe du zur von dir erstellten Event-Grid-Themenressource.
- Im Menü Access Control (IAM) wählen Sie Rollenzuweisung hinzufügen.
- Wählen Sie auf der Registerkarte RolleEvent Grid Data Sender aus, und wählen Sie dann Weiter aus.
- Im Reiter Mitglieder wählen Sie Mitglieder auswählen und geben Sie dann Ihren Microsoft Entra-Benutzernamen in das Auswählen-Feld ein, das erscheint (zum Beispiel,
user@contoso.com). - Wählen Sie Ihren Microsoft Entra-Benutzernamen aus und wählen Sie dann Überprüfen + zuweisen.
Konfiguration des Azure-Portals
Um das Routing zu konfigurieren:
- Navigieren Sie im Azure-Portal zu Ihrem Namespace.
- Wählen Sie unter Routing die Option Routing aktivieren aus.
- Für den Thementyp wählen Sie entweder Namespace-Thema oder Benutzerdefiniertes Thema.
- Für Thema wählen Sie das von Ihnen erstellte Thema, auf dem alle MQTT-Nachrichten weitergeleitet werden.
- Für benutzerdefinierte Themen zeigt die Liste nur die Themen an, die die benutzerdefinierten Event-Grid-Anforderungen für das Routing erfüllen.
- Wenn Sie ein benutzerdefiniertes Thema auswählen, erscheint der Abschnitt "Verwaltete Identität für die Lieferung ". Wählen Sie eine der folgenden Optionen für die Identität aus, die den MQTT-Broker authentifiziert, während er die MQTT-Nachrichten an das benutzerdefinierte Thema liefert:
- Keine: Weise dir für das benutzerdefinierte Thema die Rolle Event Grid Data Sender zu.
- Systemzugewiesene Identität: Aktivieren Sie die systemzugewiesene Identität im Namensraum als Voraussetzung und weisen Sie die Rolle Event Grid Data Sender der systemzugewiesenen Identität auf dem benutzerdefinierten Thema zu.
- Benutzerzugewiesene Identität: Aktivieren Sie die benutzerdefinierte Identität im Namensraum als Voraussetzung und weisen Sie die Event-Grid Data Sender-Rolle der ausgewählten Identität auf dem benutzerdefinierten Thema zu. Wenn Sie Benutzer-zugewiesene Identität auswählen, erscheint ein Dropdown-Menü, mit dem Sie die Identität auswählen können.
- Wählen Sie Anwenden.
Anweisungen zur Anreicherungskonfiguration finden Sie in der Konfiguration des Anreicherungsportals.
Azure CLI-Konfiguration
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 akzeptiert typeNone, SystemAssigned oder UserAssigned. Legen Sie userAssignedIdentity nur fest, wenn typeUserAssigned ist.
Für Anreicherungskonfigurationsanweisungen wechseln Sie zur Konfiguration der Anreicherungs-CLI.
MQTT-Nachrichtenroutingverhalten
Während des Routings von MQTT-Nachrichten zu benutzerdefinierten Themen sorgt Event Grid für eine dauerhafte Zustellung, da es versucht, jede Nachricht mindestens einmal sofort zu übermitteln. Wenn es einen Fehler gibt, versucht Event Grid entweder die Zustellung erneut oder verwirft die für die Weiterleitung vorgesehene Nachricht. Event Grid garantiert keine Reihenfolge für die Ereignisübermittlung, sodass Abonnenten sie möglicherweise nicht in der richtigen Reihenfolge erhalten.
In der folgenden Tabelle wird das Verhalten des MQTT-Nachrichtenroutings basierend auf unterschiedlichen Fehlern beschrieben.
| Fehler | Fehlerbeschreibung | Verhalten |
|---|---|---|
| TopicNotFoundError | Das benutzerdefinierte Thema, das für den Empfang aller MQTT-gerouteten Nachrichten konfiguriert war, wurde gelöscht. | Event Grid entfernt die MQTT-Nachricht, die für das Routing gedacht war. |
| AuthenticationError | Die Rolle "Ereignisrasterdatensender" für das benutzerdefinierte Thema, das als Ziel für MQTT weitergeleitete Nachrichten konfiguriert wurde, wurde gelöscht. | Event Grid entfernt die MQTT-Nachricht, die für das Routing gedacht war. |
| Zu viele Anfragen | Die Anzahl der mqTT-weitergeleiteten Nachrichten pro Sekunde überschreitet den Veröffentlichungsgrenzwert für das benutzerdefinierte Thema. | Event Grid versucht erneut, die MQTT-Nachricht weiterzuleiten. |
| Dienstfehler | Unerwarteter Serverfehler für den Betriebsgrund eines Servers. | Event Grid versucht erneut, die MQTT-Nachricht weiterzuleiten. |
Bei Wiederholungen verwendet Event Grid eine exponentielle Backoff-Wiederholungsrichtlinie für das MQTT-Nachrichtenrouting. Event Grid versucht die Zustellung nach folgendem Zeitplan nach bestem Bemühen zu wiederholen:
- 10 Sekunden
- 30 Sekunden
- 1 Minute
- 5 Minuten
- 10 Minuten
- 30 Minuten
- 1 Stunde
- 3 Stunden
- 6 Stunden
- Alle 12 Stunden
Wenn die erneute Zustellung einer gerouteten MQTT-Nachricht, die zur erneuten Zustellung in der Warteschlange steht, erfolgreich ist, versucht Event Grid, die Nachricht nach besten Kräften aus der Wiederholungswarteschlange zu entfernen, aber Sie können dennoch doppelte Nachrichten empfangen.