Szybki start: kierowanie zdarzeń niestandardowych do usługi Azure Queue Storage za pośrednictwem usługi Event Grid przy użyciu interfejsu wiersza polecenia platformy Azure

Usługa Azure Event Grid to wysoce skalowalny i bezserwerowy broker zdarzeń, którego można użyć do integrowania aplikacji przy użyciu zdarzeń. Usługa Event Grid dostarcza zdarzenia do obsługiwanych procedur obsługi zdarzeń, a usługa Azure Queue Storage jest jednym z nich. W tym artykule użyjesz interfejsu wiersza polecenia platformy Azure, aby wykonać następujące czynności:

  1. Tworzy niestandardowy temat usługi Event Grid.
  2. Utwórz subskrypcję usługi Azure Queue dla tematu niestandardowego.
  3. Wysyłanie przykładowych zdarzeń do tematu niestandardowego.
  4. Sprawdź, czy te zdarzenia są dostarczane do usługi Azure Queue Storage.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Tworzenie grupy zasobów

Tematy usługi Event Grid to zasoby platformy Azure i muszą być umieszczone w grupie zasobów platformy Azure. Grupa zasobów to kolekcja logiczna przeznaczona do wdrażania zasobów platformy Azure i zarządzania nimi.

Utwórz grupę zasobów za pomocą polecenia az group create. Poniższy przykład obejmuje tworzenie grupy zasobów o nazwie gridResourceGroup w lokalizacji westus2.

Uwaga

Wybierz pozycję Wypróbuj obok przykładu interfejsu wiersza polecenia, aby uruchomić usługę Cloud Shell w okienku po prawej stronie. Wybierz przycisk Kopiuj , aby skopiować polecenie, wklej je w oknie usługi Cloud Shell, a następnie naciśnij klawisz ENTER, aby uruchomić polecenie.

az group create --name gridResourceGroup --location westus2

Włączanie dostawcy zasobów usługi Event Grid

  1. Jeśli usługa Event Grid nie była wcześniej używana w ramach subskrypcji platformy Azure, może być konieczne zarejestrowanie dostawcy zasobów usługi Event Grid. Uruchom następujące polecenie, aby zarejestrować dostawcę:

    az provider register --namespace Microsoft.EventGrid
    
  2. Ukończenie rejestracji może zająć trochę czasu. Aby sprawdzić stan, uruchom następujące polecenie:

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

    Gdy właściwość registrationState uzyska wartość Registered, można kontynuować.

Tworzenie tematu niestandardowego

Temat usługi Event Grid zawiera punkt końcowy zdefiniowany przez użytkownika, do którego są ogłaszane zdarzenia. Poniższy przykład obejmuje tworzenie tematu niestandardowego w grupie zasobów. Zamień nazwę <topic_name> na unikatową nazwę tematu niestandardowego. Nazwa tematu usługi Event Grid musi być unikatowa, ponieważ jest reprezentowana przez wpis System nazw domen (DNS).

  1. Określ nazwę tematu.

    topicname="<TOPIC NAME>"
    
  2. Uruchom następujące polecenie, aby utworzyć temat.

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

Tworzenie magazynu kolejek

Przed subskrybowaniem tematu niestandardowego utwórzmy punkt końcowy dla komunikatu o zdarzeniach. Utworzysz magazyn kolejek w celu zbierania zdarzeń.

  1. Określ unikatową nazwę konta usługi Azure Storage.

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Uruchom następujące polecenia, aby utworzyć konto usługi Azure Storage i kolejkę (o nazwie eventqueue) w magazynie.

    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
    

Subskrybowanie tematu niestandardowego

Poniższy przykład ilustruje subskrybowanie utworzonego tematu niestandardowego i przekazanie identyfikatora zasobu do magazynu kolejek dla punktu końcowego. Za pomocą interfejsu wiersza polecenia platformy Azure przekaż identyfikator magazynu kolejek jako punkt końcowy. Punkt końcowy ma następujący format:

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

Poniższy skrypt pobiera identyfikator zasobu konta magazynu dla kolejki. Tworzy identyfikator magazynu kolejek i subskrybuje temat usługi Event Grid. Określa typ punktu końcowego na storagequeue i używa identyfikatora kolejki dla punktu końcowego.

Ważne

Zastąp symbol zastępczy daty wygaśnięcia (<yyyy-mm-dd>) rzeczywistą wartością. Na przykład: 2022-11-17 przed uruchomieniem polecenia .

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

Konto używane do tworzenia subskrypcji zdarzeń musi mieć dostęp do zapisu w magazynie kolejek. Należy zauważyć, że ustawiono datę wygaśnięcia subskrypcji.

Jeśli korzystasz z interfejsu API REST do utworzenia subskrypcji, identyfikator konta magazynu i nazwa kolejki są przekazywane jako oddzielne parametry.

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

Wysyłanie zdarzenia do tematu niestandardowego

Wyzwólmy zdarzenie, aby zobaczyć, jak usługa Event Grid dystrybuuje komunikat do punktu końcowego. Po pierwsze uzyskajmy adres URL i klucz tematu niestandardowego.

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)

Dla uproszczenia czynności opisanych w tym artykule do tematu niestandardowego zostaną wysłane przykładowe dane zdarzenia. Zwykle dane zdarzenia są wysyłane przez aplikację lub usługę platformy Azure. CURL to narzędzie, które wysyła żądania HTTP. W tym artykule użyjesz narzędzia CURL, aby wysłać zdarzenie do tematu niestandardowego. Poniższy przykład wysyła trzy zdarzenia do tematu usługi Event Grid:

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

Przejdź do magazynu kolejek w portalu i zwróć uwagę, że usługa Event Grid wysłała te trzy zdarzenia do kolejki.

Screenshot showing the list of messages in the queue that are received from Event Grid.

Czyszczenie zasobów

Jeśli zamierzasz kontynuować pracę z tym zdarzeniem, nie usuwaj zasobów utworzonych w tym artykule. W przeciwnym razie użyj poniższego polecenia, aby usunąć zasoby utworzone w ramach tego artykułu.

az group delete --name gridResourceGroup

Następne kroki

Wiesz już, jak tworzyć tematy i subskrypcje zdarzeń. Dowiedz się więcej na temat tego, co może Ci ułatwić usługa Event Grid:

Zapoznaj się z poniższymi przykładami, aby dowiedzieć się więcej na temat publikowania zdarzeń do usługi Event Grid i korzystania z nich przy użyciu różnych języków programowania.