Schnellstart: Weiterleiten von benutzerdefinierten Ereignissen an eine Warteschlange mithilfe von Event Grid und der Azure-Befehlszeilenschnittstelle
Azure Event Grid ist ein hochgradig skalierbarer, serverloser Ereignisbroker, mit dem Sie Anwendungen mithilfe von Ereignissen integrieren können. Ereignisse werden von Event Grid an unterstützte Ereignishandler übermittelt, zu denen auch Azure Queue Storage gehört.
In diesem Schnellstart verwenden Sie die Azure-Befehlszeilenschnittstelle, um ein benutzerdefiniertes Event Grid-Thema und ein Queue Storage-Abonnement für dieses Thema zu erstellen. Anschließend senden Sie Beispielereignisse an das benutzerdefinierte Thema und überprüfen, ob diese Ereignisse an eine Warteschlange übermittelt werden.
Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
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 mit dem Befehl az group create eine Ressourcengruppe. Im folgenden Beispiel wird eine Ressourcengruppe mit dem Namen gridResourceGroup
am Standort westus2
erstellt.
Wählen Sie Cloud Shell öffnen aus, um die Azure Cloud Shell auf der rechten Seite zu öffnen. Wählen Sie die Schaltfläche Kopieren aus, um den Befehl zu kopieren. Fügen Sie ihn anschließend in Cloud Shell ein, und drücken Sie die EINGABETASTE, um ihn 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 einer Warteschlange
Bevor Sie das benutzerdefinierte Thema abonnieren, erstellen Sie den Endpunkt für die Ereignisnachricht. Sie erstellen eine Warteschlange zum Sammeln der Ereignisse.
Geben Sie einen eindeutigen Namen für das Azure Storage-Konto an:
storagename="<STORAGE ACCOUNT NAME>"
Führen Sie die folgenden Befehle aus, um ein Speicherkonto und eine Warteschlange (mit dem Namen
eventqueue
) im Speicher zu erstellen:queuename="eventqueue" az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS key="$(az storage account keys list -n $storagename --query "[0].{value:value}" --output tsv)" az storage queue create --name $queuename --account-name $storagename --account-key $key
Abonnieren eines benutzerdefinierten Themas
Im folgenden Beispiel wird das von Ihnen erstellte benutzerdefinierte Thema abonniert. Außerdem wird die Ressourcen-ID der Warteschlange für den Endpunkt übergeben. Mit der Azure-Befehlszeilenschnittstelle übergeben Sie die Warteschlangen-ID als Endpunkt. Der Endpunkt weist folgendes Format auf:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>
Das folgende Skript ruft die Ressourcen-ID des Speicherkontos für die Warteschlange ab. Damit werden die Warteschlangen-ID erstellt und ein Event Grid-Thema abonniert. Es legt den Endpunkttyp auf storagequeue
fest und verwendet die Queue Storage-ID für den Endpunkt.
Ersetzen Sie vor dem Ausführen des Befehls den Platzhalter für das Ablaufdatum (<yyyy-mm-dd>
) durch tatsächliche Werte für Jahr, Monat und Tag.
storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name mystoragequeuesubscription \
--endpoint-type storagequeue \
--endpoint $queueid \
--expiration-date "<yyyy-mm-dd>"
Das Konto, mit dem das Ereignisabonnement erstellt wird, muss über Schreibzugriff auf die Warteschlange verfügen. Beachten Sie, dass für das Abonnement ein Ablaufdatum festgelegt ist.
Wenn Sie die REST-API zum Erstellen des Abonnements verwenden, übergeben Sie die ID des Speicherkontos und den Namen der Warteschlange als separaten Parameter:
"destination": {
"endpointType": "storagequeue",
"properties": {
"queueName":"eventqueue",
"resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
}
...
Senden eines Ereignisses an Ihr benutzerdefiniertes Thema
Lösen Sie ein Ereignis aus, um zu sehen, wie Event Grid die Nachricht an Ihren Endpunkt verteilt. Rufen Sie zunächst 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)
Der Einfachheit halber senden Sie in diesem Artikel Beispielereignisdaten an das benutzerdefinierte Thema. Üblicherweise werden die Ereignisdaten von einer Anwendung oder einem Azure-Dienst gesendet.
Das cURL-Tool sendet HTTP-Anforderungen. In diesem Artikel verwenden Sie cURL, 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
Navigieren Sie im Azure-Portal zur Warteschlange. Sie können erkennen, dass Event Grid diese drei Ereignisse an die Warteschlange gesendet hat.
Bereinigen von Ressourcen
Wenn Sie dieses Ereignis weiterverwenden möchten, sollten Sie die in diesem Artikel erstellten Ressourcen nicht bereinigen. Führen Sie andernfalls den folgenden Befehl aus, um die Ressourcen zu löschen:
az group delete --name gridResourceGroup
Zugehöriger Inhalt
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 Azure 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: