Hızlı Başlangıç: Azure Event Grid'de ad alanı konularına yayımlama ve olayları kullanma

Bu hızlı başlangıçta, olayları yayımlamak, almak ve onaylamak için bash kabuk komutunu kullanarak curl çekme teslimi yaparsınız. Azure Event Grid kaynakları oluşturmak için Azure CLI komutlarını kullanın. Bu makale, çekme teslimi işlevselliğinin hızlı bir testi için uygundur.

Veri düzlemi SDK'larını kullanan örnek kod için şu kaynaklara bakın:

Çekme teslim modeli hakkında daha fazla bilgi için bkz. Azure Event Grid ad alanı kavramları ve HTTP ile çekme teslimi makaleleri.

Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

Önkoşullar

  • Bu makale, Azure CLI'nın 2.0.70 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanıyorsanız en son sürüm zaten yüklüdür.

Bir kaynak grubu oluşturun

az group create komutuyla bir Azure kaynak grubu oluşturun. Bu makalede oluşturduğunuz tüm kaynakları içerecek şekilde bu kaynak grubunu kullanın.

Komutları çalıştırmak için Cloud Shell'i kullanmanın genel adımları şunlardır:

  • Sağ bölmede bir Azure Cloud Shell penceresi görmek için Cloud Shell'u Aç seçeneğini seçin.
  • komutunu kopyalayın ve Azure Cloud Shell penceresine yapıştırın.
  • Komutu çalıştırmak için ENTER tuşuna basın.
  1. Bir Azure kaynak grubunun adını tutmak için bir değişken bildirin. <your-resource-group-name> yerine kendi değerinizi yazarak kaynak grubu için bir ad belirtin.

    resource_group="<your-resource-group-name>"
    
  2. Bir kaynak grubu oluşturun. Konumu herhangi bir Azure konumuyla değiştirebilirsiniz.

    az group create --name $resource_group --location eastus
    

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

  1. Azure aboneliğinizde Event Grid'i ilk kez kullanıyorsanı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"
    

    registrationState Registered olduğunda, devam etmeye hazırsınız.

Ad alanı oluşturma

Event Grid ad alanı, olaylarınızı gönderdiğiniz kullanıcı tanımlı bir uç nokta sağlar. Aşağıdaki örnek, Azure Cloud Shell'de Bash kullanarak kaynak grubunuzda bir ad alanı oluşturur. Ad alanı adı bir Etki Alanı Adı Sistemi (DNS) girdisinin parçası olduğundan benzersiz olmalıdır. Ad alanı adı aşağıdaki kuralları karşılamalıdır:

  • 3-50 karakter arasında olmalıdır.
  • Bölgesel olarak benzersiz olmalıdır.
  • Yalnızca izin verilen karakterler şunlardır: a-z, A-Z, 0-9 ve -
  • Microsoft, System veya EventGrid gibi ayrılmış anahtar sözcük ön ekleriyle başlamamalıdır.
  1. Event Grid ad alanınızın adını tutmak için bir değişken bildirin. değerini değerinizle değiştirerek <your-namespace-name> ad alanı için bir ad belirtin.

    namespace="<your-namespace-name>"
    
  2. Ad alanı oluşturun. Dağıttığınız konumu değiştirmek isteyebilirsiniz.

    az eventgrid namespace create --resource-group $resource_group --name $namespace --location eastus
    

Ad alanı konusu oluşturma

Ad alanı uç noktasında yayımlanan tüm olayları barındıran bir konu oluşturun.

  1. Ad alanı konunuzun adını tutmak için bir değişken bildirin. <your-topic-name> ifadesini değeriniz ile değiştirerek ad alanı konusu için bir ad belirtin.

    topic="<your-topic-name>"
    
  2. Ad alanı konunuzu oluşturun:

    az eventgrid namespace topic create --resource-group $resource_group --name $topic --namespace-name $namespace
    

Olay aboneliği oluşturma

Çekme teslimini destekleyen bir kuyruk teslimat modunu ayarlayarak bir etkinlik aboneliği oluşturun. Tüm yapılandırma seçenekleri hakkında daha fazla bilgi için bkz. Azure Event Grid REST API.

  1. Ad alanınızdaki konu için bir olay aboneliğinin adını tutacak bir değişken bildirin. <your-event-subscription-name> değerini değerinizle değiştirerek olay aboneliği için bir ad belirtin.

    event_subscription="<your-event-subscription-name>"
    
  2. Ad alanı konusuna bir olay aboneliği oluşturun:

    az eventgrid namespace topic event-subscription create --resource-group $resource_group --topic-name $topic --name $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
    

Konunuza olay gönderme

Ad alanı konusuna örnek bir olay göndermek için bu bölümdeki adımları izleyin.

Ad alanı erişim anahtarlarını listeleme

  1. Oluşturduğunuz ad alanıyla ilişkili erişim anahtarlarını alın. Olayları yayımlarken kimlik doğrulaması yapmak için bunlardan birine ihtiyacınız vardır. Anahtarlarınızı listelemek için tam ad alanı kaynak kimliğini alın. Aşağıdaki komutu çalıştırın:

    namespace_resource_id=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "id" --output tsv)
    
  2. Ad alanından ilk anahtarı alın:

    key=$(az eventgrid namespace list-key --resource-group $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

Olay yayımlama

  1. İsim alanının ana bilgisayar adını alın. Olayların gönderildiği ad alanı HTTP uç noktasını oluşturmak için bunu kullanırsınız. Aşağıdaki işlemler ilk olarak API sürümüyle 2023-06-01-previewkullanılabilir.

    publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
    
  2. CloudEvents uyumlu örnek bir olay oluşturun:

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    data öğesi, olayınızın yüküdür. Bu alana doğru oluşturulmuş herhangi bir JSON gelebilir. Bir olaya girebilen özellikler bağlam öznitelikleri olarak da bilinir. Daha fazla bilgi için bkz. CloudEvents.

  3. Olayı konuya göndermek için CURL kullanın. CURL, HTTP istekleri gönderen bir yardımcı programdır.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

Etkinliği al.

Event Grid'den olayları almak için, bir olay aboneliğine işaret eden bir uç nokta kullanın.

  1. Aşağıdaki komutu çalıştırarak uç noktayı oluşturma:

    receive_operation_uri="https://"$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
    
  2. Etkinliği değerlendirmek için bir istek gönderin.

    curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
    

Olayı onaylama

Bir olay aldıktan sonra, bu olayı işleme için uygulamanıza geçirirsiniz. Etkinliğinizi başarıyla işledikten sonra, bu olayın artık olay aboneliğinizde olması gerekmez. Event Grid'e olayı silmesini bildirmek için, alma işleminin yanıtında aldığınız kilit belirtecini kullanarak bunu onaylarsınız.

  1. Önceki bölümde, brokerProperties özelliği olan bir lockToken nesnesi içeren bir yanıt aldınız. Kilit belirteci değerini kopyalayın ve bir ortam değişkeninde ayarlayın:

    lockToken="<paste-the-lock-token-here>"
    
  2. Onaylamak istediğiniz olayın kilit belirtecini belirten onay işlemi yükünü oluşturun.

    acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
    
  3. Onay işlemi URI dizesini oluşturun:

    acknowledge_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:acknowledge?api-version=2023-06-01-preview
    
  4. Son olarak, alınan olayı onaylamak için bir istek gönderin:

    curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uri
    

    Kilit belirtecinin süresi dolmadan önce onay işlemi tamamlanırsa (olay aboneliğini oluştururken belirtildiği gibi 300 saniye), aşağıdaki örneğe benzer bir yanıt görmeniz gerekir:

    {"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}