Udostępnij za pomocą


Szybki start: kierowanie zdarzeń niestandardowych do kolejki przy użyciu usługi Event Grid i interfejsu wiersza polecenia platformy Azure

W tym przewodniku Szybki start użyjesz interfejsu wiersza polecenia platformy Azure do utworzenia tematu niestandardowego usługi Event Grid i subskrypcji usługi Queue Storage dla tego tematu. Następnie wysyłasz przykładowe zdarzenia do tematu niestandardowego i sprawdzasz, czy te zdarzenia są dostarczane do kolejki.

Usługa Azure Event Grid to wysoce skalowalny i bezserwerowy broker zdarzeń, którego można użyć do integrowania aplikacji za pośrednictwem zdarzeń. Usługa Event Grid dostarcza zdarzenia do obsługiwanych procedur obsługi zdarzeń, takich jak usługa Azure Queue Storage. Aby uzyskać więcej informacji, zobacz Programy obsługi zdarzeń.

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

Tworzenie grupy zasobów

Tematy usługi Event Grid to zasoby platformy Azure. Umieść je w grupie zasobów platformy Azure. Grupa zasobów to logiczna kolekcja, w której są wdrażane i zarządzane zasoby platformy Azure.

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.

Wybierz pozycję Otwórz usługę Cloud Shell, aby otworzyć usługę Azure Cloud Shell w okienku po prawej stronie. Wybierz przycisk Kopiuj , aby skopiować polecenie, wklej je w usłudze Cloud Shell, a następnie wybierz Enter , aby uruchomić polecenie.

az group create --name gridResourceGroup --location westus2

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

  1. Jeśli po raz pierwszy używasz usługi Event Grid 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ż wpis system nazw domen (DNS) reprezentuje go.

  1. Określ nazwę tematu:

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

    az eventgrid topic create --name $topicname --location westus2 --resource-group gridResourceGroup
    

Utwórz kolejkę

Przed zasubskrybowaniu tematu niestandardowego utwórz punkt końcowy dla komunikatu o zdarzeniu. Kolejkę można utworzyć do 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 magazynu i kolejkę (o nazwie eventqueue) w magazynie:

    queuename="eventqueue"
    
    az storage account create --name $storagename --resource-group gridResourceGroup --location westus2 --sku Standard_LRS
    key="$(az storage account keys list --account-name $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 obejmuje subskrybowanie utworzonego tematu niestandardowego. Przekazuje identyfikator zasobu kolejki dla punktu końcowego. Interfejs wiersza polecenia platformy Azure przekazuje identyfikator kolejki 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 kolejki i subskrybuje temat usługi Event Grid. Określa typ punktu końcowego na storagequeue i używa identyfikatora kolejki dla punktu końcowego.

Przed uruchomieniem polecenia zastąp symbol zastępczy daty wygaśnięcia (<yyyy-mm-dd>) rzeczywistą wartością roku, miesiąca i dnia.

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 --resource-group 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, które tworzy subskrypcję zdarzeń, musi mieć dostęp do zapisu w kolejce. Data wygaśnięcia jest ustawiona dla subskrypcji.

Jeśli używasz interfejsu API REST do utworzenia subskrypcji, przekażesz identyfikator konta magazynu i nazwę kolejki jako oddzielny parametr:

"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

Wyzwalaj zdarzenie, aby zobaczyć, jak usługa Event Grid dystrybuuje komunikat do punktu końcowego. Najpierw pobierz adres URL i klucz tematu niestandardowego:

endpoint=$(az eventgrid topic show --name $topicname --resource-group gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname --resource-group gridResourceGroup --query "key1" --output tsv)

Dla uproszczenia w tym artykule używane są przykładowe dane zdarzeń do przesłania do tematu niestandardowego. Zazwyczaj aplikacja lub usługa platformy Azure wysyła dane zdarzenia.

Narzędzie cURL wysyła żądania HTTP. W tym artykule użyjesz biblioteki cURL do wysłania zdarzenia 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 kolejki w portalu Azure, aby zobaczyć, że usługa Event Grid wysłała te trzy zdarzenia do kolejki.

Zrzut ekranu przedstawiający listę komunikatów odebranych z usługi Event Grid w kolejce.

Czyszczenie zasobów

Jeśli planujesz kontynuować pracę nad tym zdarzeniem, nie usuwaj zasobów utworzonych w tym artykule. W przeciwnym razie użyj następującego polecenia, aby usunąć zasoby:

az group delete --name gridResourceGroup

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:

Aby dowiedzieć się więcej o publikowaniu zdarzeń i używaniu zdarzeń z usługi Event Grid przy użyciu różnych języków programowania, zobacz następujące przykłady: