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.
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>"
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
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
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ğ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
Microsoft
System
EventGrid
ayrılmış anahtar sözcük ön ekleriyle başlamamalıdır.
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>"
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.
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>"
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.
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>"
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
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)
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
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-preview
kullanı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
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.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.
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
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.
Önceki adımda, özelliği olan bir nesne içeren bir
brokerProperties
lockToken
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>"
Şimdi, onaylanmasını istediğiniz olayın kilit belirtecini belirten onay işlemi yükünü derleyin.
acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
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
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ış.