Rychlý start: Směrování vlastních událostí do fronty 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 Queue Storage je jedním z nich.

V tomto rychlém startu použijete Azure CLI k vytvoření vlastního tématu Event Gridu a odběru Queue Storage 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 fronty.

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řit frontu

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

  1. Zadejte jedinečný název účtu úložiště Azure:

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Spuštěním následujících příkazů vytvořte účet úložiště a frontu (pojmenovanou eventqueue) v úložišti:

    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
    

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

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 fronty pro koncový bod. Pomocí Azure CLI předáte ID fronty jako koncový bod. Koncový bod je v tomto formátu:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>

Následující skript načte ID prostředku účtu úložiště pro danou frontu. Vytvoří ID fronty a přihlásí se k odběru tématu Event Gridu. Nastaví typ koncového bodu na storagequeue a použije ID fronty pro daný koncový bod.

Před spuštěním příkazu nahraďte zástupný symbol pro datum vypršení platnosti (<yyyy-mm-dd>) skutečnou hodnotou pro rok, měsíc a den.

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>"

Účet, který vytvoří odběr událostí, musí mít přístup k zápisu do fronty. Všimněte si, že je nastavené datum vypršení platnosti odběru.

Pokud k vytvoření předplatného použijete rozhraní REST API, předáte ID účtu úložiště a název fronty jako samostatný parametr:

"destination": {
  "endpointType": "storagequeue",
  "properties": {
    "queueName":"eventqueue",
    "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
  }
  ...

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

Přejděte do fronty na webu Azure Portal a všimněte si, že Služba Event Grid odeslala tyto tři události do fronty.

Snímek obrazovky znázorňující seznam zpráv přijatých z Event Gridu ve frontě

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: