Hızlı Başlangıç: Azure CLI kullanarak Event Grid aracılığıyla özel olayları Azure Kuyruk depolamaya yönlendirme

Azure Event Grid , olayları kullanarak uygulamaları tümleştirmek için kullanabileceğiniz yüksek oranda ölçeklenebilir ve sunucusuz bir olay aracısıdır. Event Grid desteklenen olay işleyicilerine olaylar sunar ve Azure Kuyruk depolama bunlardan biridir. Bu makalede, aşağıdaki adımlar için Azure CLI'yi kullanacaksınız:

  1. Event Grid özel konusu oluşturun.
  2. Özel konu için bir Azure Kuyruk aboneliği oluşturun.
  3. Özel konuya örnek olaylar gönderin.
  4. Bu olayların Azure Kuyruk depolama alanına teslim edildiklerini doğrulayın.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Kaynak grubu oluşturma

Event Grid konuları Azure kaynaklarıdır ve bir Azure kaynak grubuna yerleştirilmelidir. Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal koleksiyondur.

az group create komutuyla bir kaynak grubu oluşturun. Aşağıdaki örnek westus2 konumunda gridResourceGroup adlı bir kaynak grubu oluşturur.

Not

Sağ bölmede Cloud Shell'i başlatmak için CLI örneğinin yanındaki Deneyin'i seçin. Kopyala düğmesini seçerek komutu kopyalayın, Cloud Shell penceresine yapıştırın ve komutu çalıştırmak için ENTER tuşuna basın.

az group create --name gridResourceGroup --location westus2

Event Grid kaynak sağlayıcısını etkinleştirme

  1. Daha önce Azure aboneliğinizde Event Grid kullanmadıysanız Event Grid kaynak sağlayıcısını kaydetmeniz gerekebilir. Sağlayıcıyı kaydetmek için şu komutu çalıştırın:

    az provider register --namespace Microsoft.EventGrid
    
  2. Kaydın tamamlanması biraz zaman alabilir. Durumu denetlemek için aşağıdaki komutu çalıştırın:

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

    registrationStateRegistered olduğu zaman devam edebilirsiniz.

Özel konu oluşturma

Event Grid konusu, olaylarınızı gönderdiğiniz kullanıcı tanımlı bir uç nokta sağlar. Aşağıdaki örnekte özel konu, kaynak grubunuzda oluşturulur. <topic_name> değerini özel konunuz için benzersiz bir adla değiştirin. Event Grid konu adı bir Etki Alanı Adı Sistemi (DNS) girdisi ile temsil edildiğinden benzersiz olmalıdır.

  1. Konu için bir ad belirtin.

    topicname="<TOPIC NAME>"
    
  2. Konuyu oluşturmak için aşağıdaki komutu çalıştırın.

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

Kuyruk depolama oluşturma

Özel konuya abone olmadan önce, olay iletisi için uç noktayı oluşturalım. Olayları toplamak için bir Kuyruk depolama oluşturun.

  1. Azure Depolama hesabı için benzersiz bir ad belirtin.

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Depolama alanında bir Azure Depolama hesabı ve bir kuyruk (adlandırılmışeventqueue) oluşturmak için aşağıdaki komutları çalıştırın.

    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
    

Özel konuya abone olma

Aşağıdaki örnek oluşturduğunuz özel konuya abone olur ve uç nokta Kuyruk depolama kaynak kimliğini iletir. Azure CLI ile uç nokta olarak Kuyruk depolama kimliğini geçirirsiniz. Uç nokta şu biçimdedir:

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

Aşağıdaki betik, kuyruk için depolama hesabının kaynak kimliğini alır. Kuyruk depolama için kimliği oluşturur ve bir Event Grid konusuna abone olur. Uç nokta türünü storagequeue olarak ayarlar ve uç nokta için kuyruk kimliğini kullanır.

Önemli

Süre sonu yer tutucusu (<yyyy-mm-dd>) değerini gerçek bir değerle değiştirin. Örneğin: 2022-11-17 komutu çalıştırmadan önce.

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

Olay aboneliğini oluşturan hesabın kuyruk depolamada yazma erişimine sahip olması gerekir. Abonelik için bir sona erme tarihi belirlendiğine dikkat edin.

Aboneliği REST API kullanarak oluşturursanız depolama hesabının kimliğini ve kuyruğun adını ayrı birer parametre olarak geçirirsiniz.

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

Özel konunuza olay gönderme

Event Grid’in iletiyi uç noktanıza nasıl dağıttığını görmek için bir olay tetikleyelim. İlk olarak özel konunun URL’sini ve anahtarını alalım.

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)

Bu makaleyi kolaylaştırmak için özel konuya göndereceğiniz örnek olay verileri sağlanmıştır. Normalde olay verilerini bir uygulama veya Azure hizmeti gönderir. CURL, HTTP istekleri gönderen bir yardımcı programdır. Bu makalede, olayı özel konuya göndermek için CURL kullanacaksınız. Aşağıdaki örnek Event Grid konusuna üç olay gönderir:

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

Portalda Kuyruk depolamaya gidin ve Event Grid’in bu üç olayı kuyruğa gönderdiğine dikkat edin.

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

Kaynakları temizleme

Bu olayla çalışmaya devam etmeyi planlıyorsanız bu makalede oluşturulan kaynakları temizlemeyin. Aksi takdirde, bu makalede oluşturduğunuz kaynakları silmek için aşağıdaki komutu kullanın.

az group delete --name gridResourceGroup

Sonraki adımlar

Artık konu oluşturma ve olay aboneliklerini öğrendiğinize göre, Event Grid’in size nasıl yardımcı olabileceği konusunda daha fazla bilgi edinebilirsiniz:

Event Grid'de olayları farklı programlama dilleri kullanarak yayımlama ve kullanma hakkında bilgi edinmek için aşağıdaki örneklere bakın.