Snabbstart: Dirigera anpassade händelser till en händelsehubb med hjälp av Event Grid och Azure CLI
Azure Event Grid är en mycket skalbar och serverlös händelsekö som du kan använda för att integrera program via händelser. Event Grid levererar händelser till händelsehanterare som stöds och Azure Event Hubs är en av dem.
I den här snabbstarten använder du Azure CLI för att skapa ett anpassat Event Grid-ämne och en Event Hubs-prenumeration för det ämnet. Sedan skickar du exempelhändelser till det anpassade ämnet och kontrollerar att dessa händelser levereras till en händelsehubb.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Skapa en resursgrupp
Event Grid-ämnen är Azure-resurser och de måste placeras i en Azure-resursgrupp. Resursgruppen är en logisk samling där Azure-resurser distribueras och hanteras.
Skapa en resursgrupp med kommandot az group create. I följande exempel skapas en resursgrupp med namnet gridResourceGroup
på platsen westus2
.
Välj Öppna Cloud Shell för att öppna Azure Cloud Shell i den högra rutan. Välj knappen Kopiera för att kopiera kommandot, klistra in det i Cloud Shell och välj sedan returnyckeln för att köra kommandot.
az group create --name gridResourceGroup --location westus2
Aktivera Event Grid-resursprovidern
Om du inte tidigare har använt Event Grid i din Azure-prenumeration kan du behöva registrera Event Grid-resursprovidern. Registrera providern genom att köra följande kommando:
az provider register --namespace Microsoft.EventGrid
Det kan ta en stund innan registreringen är klar. Kontrollera statusen genom att köra följande kommando:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
När
registrationState
ärRegistered
kan du fortsätta.
Skapa en anpassat ämne
Ett Event Grid-ämne innehåller en användardefinierad slutpunkt som du publicerar dina händelser till. I följande exempel skapas det anpassade ämnet i din resursgrupp.
Ersätt <TOPIC NAME>
med ett unikt namn för ditt anpassade ämne. Event Grid-ämnesnamnet måste vara unikt eftersom en DNS-post (Domain Name System) representerar det.
Ange ett namn för ämnet:
topicname="<TOPIC NAME>"
Kör följande kommando för att skapa ämnet:
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
Skapa en händelsehubb
Innan du prenumererar på det anpassade ämnet skapar du slutpunkten för händelsemeddelandet. Du skapar en händelsehubb för att samla in händelserna.
Ange ett unikt namn för Event Hubs-namnområdet:
namespace="<EVENT HUBS NAMESPACE NAME>"
Kör följande kommandon för att skapa ett Event Hubs-namnområde och en händelsehubb med namnet
demohub
i namnområdet:hubname=demohub az eventhubs namespace create --name $namespace --resource-group gridResourceGroup az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
Prenumerera på ett anpassat ämne
Du prenumererar på ett Event Grid-ämne för att berätta för Event Grid vilka händelser du vill spåra. I följande exempel prenumererar du på det anpassade ämne som du skapade och skickar resurs-ID:t för händelsehubben för slutpunkten. Slutpunkten är i det här formatet:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>
Följande skript hämtar resurs-ID:t för händelsehubben och prenumererar på ett Event Grid-ämne. Det ställer in slutpunktstypen på eventhub
och använder händelsehubb-ID:t för slutpunkten.
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
Det konto som skapar händelseprenumerationen måste ha skrivåtkomst till händelsehubben.
Skicka en händelse till det anpassade ämnet
Utlös en händelse för att se hur Event Grid distribuerar meddelandet till slutpunkten. Hämta först URL:en och nyckeln för det anpassade ämnet:
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)
För enkelhetens skull i den här artikeln använder du exempelhändelsedata för att skicka till det anpassade ämnet. Vanligtvis skickar ett program eller en Azure-tjänst händelsedata.
CURL-verktyget skickar HTTP-begäranden. I den här artikeln använder du cURL för att skicka händelsen till det anpassade ämnet. I följande exempel skickas tre händelser till Event Grid-ämnet:
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
Observera att Event Grid skickade dessa tre händelser till händelsehubben på sidan Översikt för event hubs-namnområdet i Azure Portal. Du ser samma diagram på sidan Översikt för Event Hubs-instansen demohub
.
Vanligtvis skapar du ett program som hämtar händelsemeddelanden från händelsehubben. Mer information finns i:
- Kom igång tar emot meddelanden med händelseprocessorvärden i .NET Standard
- Ta emot händelser från Azure Event Hubs med hjälp av Java
- Ta emot händelser från Event Hubs med hjälp av Apache Storm
Rensa resurser
Om du planerar att fortsätta arbeta med den här händelsen ska du inte rensa resurserna som du skapade i den här artikeln. Annars använder du följande kommando för att ta bort resurserna:
az group delete --name gridResourceGroup
Relaterat innehåll
Nu när du vet hur du skapar ämnen och prenumerationer på händelser kan du läsa mer om vad Event Grid kan hjälpa dig med:
- Om Event Grid
- Dirigera Azure Blob Storage-händelser till en anpassad webbslutpunkt
- Övervaka ändringar på virtuella maskiner med Azure Event Grid och Logic Apps
- Strömma stordata till ett datalager
Mer information om hur du publicerar händelser till och använder händelser från Event Grid med hjälp av olika programmeringsspråk finns i följande exempel: