Quickstart: Aangepaste gebeurtenissen routeren naar een wachtrij met behulp van Event Grid en de Azure CLI
Azure Event Grid is een uiterst schaalbare en serverloze gebeurtenisbroker die u kunt gebruiken om toepassingen te integreren via gebeurtenissen. Event Grid levert gebeurtenissen aan ondersteunde gebeurtenis-handlers en Azure Queue Storage is een van deze gebeurtenissen.
In deze quickstart gebruikt u de Azure CLI om een aangepast Event Grid-onderwerp en een Queue Storage-abonnement voor dat onderwerp te maken. Vervolgens verzendt u voorbeeldgebeurtenissen naar het aangepaste onderwerp en controleert u of deze gebeurtenissen in een wachtrij worden geleverd.
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Een brongroep maken
Event Grid-onderwerpen zijn Azure-resources en moeten worden geplaatst in een Azure-resourcegroep. De resourcegroep is een logische verzameling waarin Azure-resources worden geïmplementeerd en beheerd.
Maak een resourcegroep met de opdracht az group create. In het volgende voorbeeld wordt een resourcegroep met de naam gridResourceGroup
gemaakt op de locatie westus2
.
Selecteer Cloud Shell openen om Azure Cloud Shell in het rechterdeelvenster te openen. Selecteer de knop Kopiëren om de opdracht te kopiëren, plak deze in Cloud Shell en selecteer vervolgens de Enter-toets om de opdracht uit te voeren.
az group create --name gridResourceGroup --location westus2
De Event Grid-resourceprovider inschakelen
Als u Event Grid in uw Azure-abonnement nog niet eerder hebt gebruikt, moet u mogelijk de Event Grid-resourceprovider registreren. Voer de volgende opdracht uit om de provider te registreren:
az provider register --namespace Microsoft.EventGrid
Het kan even duren voordat de registratie is voltooid. Voer de volgende opdracht uit om de status te controleren:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Wanneer
registrationState
Registered
is, bent u klaar om door te gaan.
Een aangepast onderwerp maken
Een Event Grid-onderwerp biedt een door de gebruiker gedefinieerd eindpunt waarnaar u uw gebeurtenissen plaatst. In het volgende voorbeeld wordt het aangepaste onderwerp in uw resourcegroep gemaakt.
Vervang <TOPIC NAME>
door een unieke naam voor uw aangepaste onderwerp. De Event Grid-onderwerpnaam moet uniek zijn omdat een DNS-vermelding (Domain Name System) deze vertegenwoordigt.
Geef een naam op voor het onderwerp:
topicname="<TOPIC NAME>"
Voer de volgende opdracht uit om het onderwerp te maken:
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
Een wachtrij maken
Voordat u zich abonneert op het aangepaste onderwerp, maakt u het eindpunt voor het gebeurtenisbericht. U maakt een wachtrij voor het verzamelen van de gebeurtenissen.
Geef een unieke naam op voor het Azure-opslagaccount:
storagename="<STORAGE ACCOUNT NAME>"
Voer de volgende opdrachten uit om een opslagaccount en een wachtrij (benoemd
eventqueue
) te maken in de opslag: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
Abonneren op een aangepast onderwerp
In het volgende voorbeeld wordt u geabonneerd op het aangepaste onderwerp dat u hebt gemaakt en wordt de resource-id van de wachtrij voor het eindpunt doorgegeven. Met de Azure CLI geeft u de wachtrij-id door als het eindpunt. Het eindpunt heeft deze indeling:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>
Met het volgende script wordt de resource-id van het opslagaccount voor de wachtrij opgehaald. Hiermee wordt de wachtrij-id samengesteld en wordt u geabonneerd op een Event Grid-onderwerp. Het type eindpunt wordt ingesteld op storagequeue
en de wachtrij-id wordt gebruikt voor het eindpunt.
Voordat u de opdracht uitvoert, vervangt u de tijdelijke aanduiding voor de vervaldatum (<yyyy-mm-dd>
) door een werkelijke waarde voor het jaar, de maand en de dag.
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>"
Het account waarmee het gebeurtenisabonnement wordt gemaakt, moet schrijftoegang hebben tot de wachtrij. U ziet dat er een vervaldatum is ingesteld voor het abonnement.
Als u de REST API gebruikt om het abonnement te maken, geeft u de id van het opslagaccount en de naam van de wachtrij door als een afzonderlijke parameter:
"destination": {
"endpointType": "storagequeue",
"properties": {
"queueName":"eventqueue",
"resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
}
...
Een gebeurtenis verzenden naar het aangepaste onderwerp
Activeer een gebeurtenis om te zien hoe Event Grid het bericht naar uw eindpunt distribueert. Haal eerst de URL en sleutel voor het aangepaste onderwerp op:
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)
Ter vereenvoudiging in dit artikel gebruikt u voorbeeldgebeurtenisgegevens om naar het aangepaste onderwerp te verzenden. Normaal gesproken verzendt een toepassing of een Azure-service de gebeurtenisgegevens.
Het cURL-hulpprogramma verzendt HTTP-aanvragen. In dit artikel gebruikt u cURL om de gebeurtenis naar het aangepaste onderwerp te verzenden. In het volgende voorbeeld worden drie gebeurtenissen verzonden naar het Event Grid-onderwerp:
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
Ga naar de wachtrij in Azure Portal en u ziet dat Event Grid deze drie gebeurtenissen naar de wachtrij heeft verzonden.
Resources opschonen
Als u van plan bent om door te gaan met deze gebeurtenis, moet u de resources die u in dit artikel hebt gemaakt, niet opschonen. Gebruik anders de volgende opdracht om de resources te verwijderen:
az group delete --name gridResourceGroup
Gerelateerde inhoud
U weet nu hoe u onderwerpen maakt en hoe u zich abonneert op een gebeurtenis. Kijk waar Event Grid u nog meer bij kan helpen:
- Over Event Grid
- Azure Blob Storage-gebeurtenissen routeren naar een aangepast webeindpunt
- Monitor virtual machine changes with Azure Event Grid and Logic Apps (Wijzigingen in virtuele machines bewaken met Azure Event Grid en Logic Apps)
- Big data streamen naar een datawarehouse
Zie de volgende voorbeelden voor meer informatie over het publiceren van gebeurtenissen naar en het verbruiken van gebeurtenissen vanuit Event Grid met behulp van verschillende programmeertalen: