Aracılığıyla paylaş


Hızlı Başlangıç: Event Grid ve Azure CLI kullanarak özel olayları kuyruğa yönlendirme

Azure Event Grid , uygulamaları olaylar aracılığıyla 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 hızlı başlangıçta, Azure CLI kullanarak bir Event Grid özel konusu ve bu konu için bir Kuyruk Depolama aboneliği oluşturacaksınız. Ardından özel konuya örnek olaylar gönderir ve bu olayların bir kuyruğa teslim olduğunu doğrularsınız.

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 komutunu kullanarak bir kaynak grubu oluşturun. Aşağıdaki örnek westus2 konumunda gridResourceGroup adlı bir kaynak grubu oluşturur.

Sağ bölmede Azure Cloud Shell'i açmak için Cloud Shell'i Aç'ı seçin. Kopyala düğmesini seçerek komutu kopyalayın, Cloud Shell'e yapıştırın ve ardından Enter tuşunu seçerek komutu çalıştırı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. Bir Etki Alanı Adı Sistemi (DNS) girdisi bunu temsil ettiğinden Event Grid konu adı 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 oluştur

Özel konuya abone olmadan önce olay iletisi için uç noktayı oluşturun. Olayları toplamak için bir kuyruk oluşturursunuz.

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

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Depolama alanında bir depolama hesabı ve kuyruk (adlı 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 için kuyruğun kaynak kimliğini geçirir. Azure CLI ile kuyruk kimliğini uç nokta olarak 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 kimliğini 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.

Komutu çalıştırmadan önce, son kullanma tarihi (<yyyy-mm-dd>) için yer tutucuyu yıl, ay ve gün için gerçek bir değerle değiştirin.

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 kuyruğa yazma erişimi olmalıdır. Abonelik için bir sona erme tarihi belirlendiğine dikkat edin.

Aboneliği oluşturmak için REST API kullanırsanız, depolama hesabının kimliğini ve kuyruğun adını ayrı bir 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 tetikleme. İlk olarak, özel konunun URL'sini ve anahtarını alın:

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 makaledeki basitlik açısından, özel konuya göndermek için örnek olay verilerini kullanırsınız. Genellikle bir uygulama veya Azure hizmeti olay verilerini gönderir.

cURL aracı HTTP istekleri gönderir. 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

Azure portalında kuyruğa gidin ve Event Grid'in bu üç olayı kuyruğa gönderdiğine dikkat edin.

Kuyruktaki Event Grid'den alınan iletilerin listesini gösteren ekran görüntüsü.

Kaynakları temizleme

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

az group delete --name gridResourceGroup

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 çeşitli programlama dillerini kullanarak olay yayımlama ve olay kullanma hakkında bilgi edinmek için aşağıdaki örneklere bakın: