Schnellstart: Weiterleiten benutzerdefinierter Ereignisse an Azure Event Hubs mit der Azure CLI und Event Grid
Azure Event Grid ist ein hochgradig skalierbarer, serverloser Ereignisbroker, mit dem Sie Anwendungen mithilfe von Ereignissen integrieren können. Event Grid übermittelt Ereignisse an unterstützte Ereignishandler, und Azure Event Hubs ist einer davon. In diesem Artikel wird die Azure CLI für folgende Schritte verwendet:
- Erstellt ein benutzerdefiniertes Event Grid-Thema.
- Erstellen eines Azure Event Hubs-Abonnements für das benutzerdefinierte Thema
- Senden von Beispielereignissen an das benutzerdefinierte Thema
- Vergewissern, dass diese Ereignisse an den Event Hub übermittelt werden
Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.
Erstellen einer Ressourcengruppe
Event Grid-Themen sind Azure-Ressourcen und müssen in einer Azure-Ressourcengruppe platziert werden. Die Azure-Ressourcengruppe ist eine logische Sammlung, in der Azure-Ressourcen bereitgestellt und verwaltet werden.
Erstellen Sie mithilfe des Befehls az group create eine Ressourcengruppe. Das folgende Beispiel erstellt eine Ressourcengruppe namens gridResourceGroup am Standort westus2.
Hinweis
Wählen Sie neben dem CLI-Beispiel die Option Jetzt testen aus, um Cloud Shell im rechten Bereich zu starten. Wählen Sie die Schaltfläche Kopieren aus, um den Befehl zu kopieren, fügen Sie ihn in das Cloud Shell-Fenster ein, und drücken Sie anschließend die EINGABETASTE, um den Befehl auszuführen.
az group create --name gridResourceGroup --location westus2
Aktivieren des Event Grid-Ressourcenanbieters
Wenn Sie zuvor in Ihrem Azure-Abonnement noch nicht Event Grid verwendet haben, sollten Sie den Event Grid-Ressourcenanbieter registrieren. Führen Sie den folgenden Befehl aus, um den Anbieter zu registrieren:
az provider register --namespace Microsoft.EventGrid
Es kann einen Moment dauern, bis die Registrierung abgeschlossen ist. Führen Sie den folgenden Befehl aus, um den Status zu überprüfen:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Wenn
registrationState
Registered
ist, können Sie den Vorgang fortsetzen.
Erstellen eines benutzerdefinierten Themas
Ein Event Grid-Thema stellt einen benutzerdefinierten Endpunkt bereit, an dem Sie Ihre Ereignisse posten. Im folgenden Beispiel wird das benutzerdefinierte Thema in Ihrer Ressourcengruppe erstellt. Ersetzen Sie <topic_name>
durch einen eindeutigen Namen für Ihr benutzerdefiniertes Thema. Der Name des Event Grid-Themas muss eindeutig sein, da er durch einen DNS-Eintrag (Domain Name System) dargestellt wird.
Geben Sie einen Namen für das Thema an.
topicname="<TOPIC NAME>"
Führen Sie den folgenden Befehl aus, um das Thema zu erstellen.
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
Erstellen eines Ereignis-Hubs
Vor dem Abonnieren des benutzerdefinierten Themas erstellen wir zunächst den Endpunkt für die Ereignisnachricht. Sie erstellen einen Event Hub zum Sammeln der Ereignisse.
Geben Sie einen eindeutigen Namen für den Event Hubs-Namespace an.
namespace="<EVENT HUBS NAMESPACE NAME>"
Führen Sie die folgenden Befehle aus, um einen Event Hubs-Namespace und in diesem Namespace einen Event Hub namens
demohub
zu erstellen.hubname=demohub az eventhubs namespace create --name $namespace --resource-group gridResourceGroup az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
Abonnieren eines benutzerdefinierten Themas
Sie abonnieren ein Event Grid-Thema, um Event Grid mitzuteilen, welche Ereignisse Sie nachverfolgen möchten. Im folgenden Beispiel wird das von Ihnen erstellte benutzerdefinierte Thema abonniert. Außerdem wird die Ressourcen-ID des Event Hub für den Endpunkt übergeben. Der Endpunkt weist folgendes Format auf:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>
Das folgende Skript ruft die Ressourcen-ID für den Event Hub ab und abonniert ein Event Grid-Thema. Es legt den Endpunkttyp auf eventhub
fest und verwendet die Event Hub-ID für den Endpunkt.
hubid=$(az eventhubs eventhub show --name $hubname --namespace-name $namespace --resource-group gridResourceGroup --query id --output tsv)
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name subtoeventhub \
--endpoint-type eventhub \
--endpoint $hubid
Das Konto, das das Ereignisabonnement erstellt, muss über Schreibzugriff auf den Event Hub verfügen.
Senden eines Ereignisses an Ihr benutzerdefiniertes Thema
Nun wird ein Ereignis ausgelöst, um zu sehen, wie Event Grid die Nachricht an Ihren Endpunkt weiterleitet. Zunächst rufen wir die URL und den Schlüssel für das benutzerdefinierte Thema ab.
endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
Zur Vereinfachung dieses Artikels verwenden Sie Beispielereignisdaten, die an das benutzerdefinierte Thema gesendet werden können. Üblicherweise werden die Ereignisdaten von einer Anwendung oder einem Azure-Dienst gesendet. CURL ist ein Hilfsprogramm zum Senden von HTTP-Anforderungen. In diesem Artikel wird CURL verwendet, um das Ereignis an das benutzerdefinierte Thema zu senden. Das folgende Beispiel sendet drei Ereignisse an das Event Grid-Thema:
for i in 1 2 3
do
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done
Auf der Seite Übersicht für Ihren Event Hubs-Namespace im Azure-Portal sehen Sie, dass Event Grid diese drei Ereignisse an den Event Hub gesendet hat. Das gleiche Diagramm wird auf der Seite Übersicht für die Event Hubs-Instanzseite demohub
angezeigt.
In der Regel erstellen Sie eine Anwendung, die die Ereignisse vom Event Hub abruft. Wenn Sie eine Anwendung erstellen möchten, die Nachrichten von einem Event Hub empfängt, lesen Sie die Informationen in den folgenden Artikeln:
- Erste Schritte zum Empfangen von Nachrichten mit dem Ereignisprozessorhost (EventProcessorHost) in .NET Standard
- Empfangen von Ereignissen von Azure Event Hubs mithilfe von Java
- Empfangen von Ereignissen von Event Hubs mithilfe von Apache Storm
Bereinigen von Ressourcen
Wenn Sie dieses Ereignis weiterverwenden möchten, können Sie die Bereinigung der in diesem Artikel erstellten Ressourcen überspringen. Verwenden Sie andernfalls den folgenden Befehl, um die in diesem Artikel erstellten Ressourcen zu löschen.
az group delete --name gridResourceGroup
Nächste Schritte
Sie haben gelernt, wie Sie Themen und Ereignisabonnements erstellen. Nun können Sie sich ausführlicher darüber informieren, welche Möglichkeiten Event Grid bietet:
- Einführung in Azure Event Grid
- Weiterleiten von Blob Storage-Ereignissen an einen benutzerdefinierten Webendpunkt
- Überwachen von Änderungen an virtuellen Computern mit Azure Event Grid und Logic Apps
- Streamen von Big Data in ein Data Warehouse
In den folgenden Beispielen erfahren Sie, wie Sie Ereignisse in Event Grid mithilfe verschiedener Programmiersprachen veröffentlichen und nutzen: