Rychlý start: Směrování vlastních událostí do centra událostí pomocí Event Gridu a Azure CLI

Azure Event Grid je vysoce škálovatelný a bezserverový zprostředkovatel událostí, který můžete použít k integraci aplikací prostřednictvím událostí. Event Grid doručuje události do podporovaných obslužných rutin událostí a Azure Event Hubs je jedním z nich.

V tomto rychlém startu pomocí Azure CLI vytvoříte vlastní téma Event Gridu a odběr služby Event Hubs pro toto téma. Pak odešlete ukázkové události do vlastního tématu a ověříte, že se tyto události doručí do centra událostí.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Vytvoření skupiny zdrojů

Témata event Gridu jsou prostředky Azure a musí se umístit do skupiny prostředků Azure. Skupina prostředků je logická kolekce, ve které se nasazují a spravují prostředky Azure.

Vytvořte skupinu prostředků pomocí příkazu az group create. Následující příklad vytvoří skupinu prostředků s názvem gridResourceGroup v umístění westus2.

Výběrem možnosti Otevřít Cloud Shell otevřete Azure Cloud Shell v pravém podokně. Výběrem tlačítka Kopírovat zkopírujte příkaz, vložte ho do Cloud Shellu a pak stisknutím klávesy Enter příkaz spusťte.

az group create --name gridResourceGroup --location westus2

Povolení poskytovatele prostředků Event Gridu

  1. Pokud jste službu Event Grid ve svém předplatném Azure ještě nepoužívali, možná budete muset zaregistrovat poskytovatele prostředků Event Gridu. Spuštěním následujícího příkazu zaregistrujte poskytovatele:

    az provider register --namespace Microsoft.EventGrid
    
  2. Dokončení registrace může chvíli trvat. Pokud chcete zkontrolovat stav, spusťte následující příkaz:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Jakmile registrationState je Registered, můžete pokračovat.

Vytvoření vlastního tématu

Téma Event Gridu poskytuje uživatelem definovaný koncový bod, do kterého publikujete události. Následující příklad vytvoří vlastní téma ve vaší skupině prostředků.

Nahraďte <TOPIC NAME> jedinečným názvem vlastního tématu. Název tématu Event Gridu musí být jedinečný, protože položka DNS (Domain Name System) ji představuje.

  1. Zadejte název tématu:

    topicname="<TOPIC NAME>"
    
  2. Spuštěním následujícího příkazu vytvořte téma:

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Vytvoření centra událostí

Než se přihlásíte k odběru vlastního tématu, vytvořte koncový bod pro zprávu události. Vytvoříte centrum událostí pro shromažďování událostí.

  1. Zadejte jedinečný název oboru názvů služby Event Hubs:

    namespace="<EVENT HUBS NAMESPACE NAME>"
    
  2. Spuštěním následujících příkazů vytvořte obor názvů služby Event Hubs a centrum událostí pojmenované demohub v tomto oboru názvů:

    hubname=demohub
    
    az eventhubs namespace create --name $namespace --resource-group gridResourceGroup
    az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
    

Přihlášení k odběru vlastního tématu

Přihlásíte se k odběru tématu Event Gridu a sdělíte službě Event Grid, které události chcete sledovat. Následující příklad se přihlásí k odběru vlastního tématu, které jste vytvořili, a předá ID prostředku centra událostí pro koncový bod. Koncový bod je v tomto formátu:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>

Následující skript získá ID prostředku pro centrum událostí a přihlásí se k odběru tématu event Gridu. Nastaví typ koncového bodu na eventhub a použije ID centra událostí pro daný koncový bod.

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

Účet, který vytváří odběr události, musí mít přístup k zápisu do služby centra událostí.

Odeslání události do vlastního tématu

Aktivujte událost, abyste viděli, jak Event Grid distribuuje zprávu do koncového bodu. Nejprve získejte adresu URL a klíč vlastního tématu:

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)

V zájmu jednoduchosti v tomto článku použijete ukázková data událostí k odeslání do vlastního tématu. Aplikace nebo služba Azure obvykle odesílají data událostí.

Nástroj cURL odesílá požadavky HTTP. V tomto článku použijete cURL k odeslání události do vlastního tématu. Následující příklad odešle do tématu Event Gridu tři události:

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

Na webu Azure Portal si na stránce Přehled vašeho oboru názvů služby Event Hubs všimněte, že Služba Event Grid tyto tři události odeslala do centra událostí. Stejný graf se zobrazí na stránce Přehled instance demohub služby Event Hubs.

Snímek obrazovky znázorňující stránku portálu s počtem příchozích zpráv 3

Obvykle vytvoříte aplikaci, která načte zprávy událostí z centra událostí. Další informace naleznete v tématu:

Vyčištění prostředků

Pokud chcete pokračovat v práci s touto událostí, nevyčistíte prostředky, které jste vytvořili v tomto článku. V opačném případě odstraňte prostředky pomocí následujícího příkazu:

az group delete --name gridResourceGroup

Když teď víte, jak vytvářet témata a odběry událostí, zjistěte, s čím vám služba Event Grid ještě může pomoct:

Informace o publikování událostí do Event Gridu a jejich využívání pomocí různých programovacích jazyků najdete v následujících ukázkách: