Azure Event Grid'de ad alanı konularına yayımlama ve olayları kullanma

Bu makalede olayları yayımlamak, almak ve onaylamak için bash kabuk komutunu kullanarak curl çekme teslimine hızlı bir giriş sağlanır. Event Grid kaynakları CLI komutları kullanılarak oluşturulur. 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 bkz . .NET veya Java örnekleri. Java için örnek kodu iki makalede sağlıyoruz: olayları yayımlama ve olayları alma hızlı başlangıçları. Çekme teslim modeli hakkında daha fazla bilgi için kavramlar ve çekme teslimi genel bakış makalelerine bakın.

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

Ön koşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

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

Kaynak grubu oluşturma

az group create komutuyla bir Azure kaynak grubu oluşturun. Bu kaynak grubunu, bu makalede oluşturulan tüm kaynakları içerecek şekilde kullanırsınız.

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'i Aç'ı 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. değerini istediğiniz bir değerle değiştirerek <your-resource-group-name> kaynak grubu için bir ad belirtin.

    resource_group="<your-resource-group-name>"
    
  2. Kaynak grubu oluşturun. Konumu uygun gördüğünüz şekilde değiştirin.

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

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.

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 a-z, A-Z, 0-9 ve -
  • veya gibi MicrosoftSystemEventGridayrı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 istediğiniz bir değerle değiştirerek <your-namespace-name> ad alanı için bir ad belirtin.

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

    az eventgrid namespace create -g $resource_group -n $namespace -l eastus
    

Ad alanı konusu oluşturma

Ad alanı uç noktasında yayımlanan tüm olayları tutmak için kullanılan bir konu oluşturun.

  1. Ad alanı konunuzun adını tutmak için bir değişken bildirin. değerini istediğiniz bir değerle değiştirerek <your-topic-name> ad alanı konusu için bir ad belirtin.

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

    az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace 
    

Olay aboneliği oluşturma

Çekme teslimini destekleyen teslim modunu kuyruğa ayarlayan bir olay aboneliği oluşturun. Tüm yapılandırma seçenekleri hakkında daha fazla bilgi için en son Event Grid denetim düzlemi REST API'sine bakın.

  1. Ad alanı konunuzun olay aboneliğinin adını tutmak için bir değişken bildirin. değerini istediğiniz bir değerle değiştirerek <your-event-subscription-name> 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 -g $resource_group --topic-name $topic -n $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
    

Konunuza olay gönderme

Şimdi bu bölümdeki adımları izleyerek ad alanı konusuna örnek bir olay gönderin.

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 birini kullanırsınız. Anahtarlarınızı listelemek için önce tam ad alanı kaynak kimliği gerekir. Aşağıdaki komutu çalıştırarak alın:

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

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

Olay yayımlama

  1. Ad alanı konak 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) hakkında daha fazla bilgi için bkz . CloudEvents belirtimleri.

  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
    

Olayı alma

Event Grid'den olay aboneliğine başvuran bir uç nokta kullanarak olayları alırsınız.

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

    receive_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
    
  2. Olayı kullanmak 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. Olayınızı 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 kabul etmiş olursunuz.

  1. Önceki adımda, özelliği olan bir nesne içeren bir brokerPropertieslockToken yanıt almış olmanız gerekir. Kilit belirteci değerini kopyalayın ve bir ortam değişkeninde ayarlayın:

    lockToken="<paste-the-lock-token-here>"
    
  2. Şimdi, onaylanmasını istediğiniz olayın kilit belirtecini belirten onay işlemi yükünü derleyin.

    acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
    
  3. Onay işlemi URI'siyle dizeyi oluşturmaya devam edin:

    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
    

    Onay işlemi kilit belirtecinin süresi dolmadan önce yürütülürse (olay aboneliğini oluştururken ayarlanan 300 saniye), aşağıdaki örneğe benzer bir yanıt görmeniz gerekir:

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

Sonraki adımlar

Çekme teslim modeli hakkında daha fazla bilgi edinmek için bkz . Çekme teslimine genel bakış.