HTTP ile çekme teslimi
Bu makale, Event Grid'in HTTP üzerinden çekme teslimini kullanmaya başlamadan önce temel bilgiler sağlamak için Azure Event Grid nedir? ve Event Grid kavramları makalesini temel alır. Desteklenen temel kavramları, kaynak modellerini ve ileti teslim modlarını kapsar. Bu belgenin sonunda, Event Grid'i kullanma konusunda size yol gösteren makalelere ve ayrıntılı kavramsal bilgiler sunan makalelere yararlı bağlantılar bulabilirsiniz.
Not
Bu belge, HTTP protokollerini kullanan Event Grid özelliklerini kullanmaya başlamanıza yardımcı olur. Bu makale, uygulamaları bulutta tümleştirmesi gereken kullanıcılar için uygundur. IoT cihaz verilerini iletmeniz gerekiyorsa bkz . Azure Event Grid'de MQTT Aracısı özelliğine genel bakış.
CloudEvents
Event Grid ad alanı konuları, JSON biçiminde HTTP protokol bağlamasını kullanarak Cloud Native Computing Foundation'ın (CNCF) açık standart CloudEvents 1.0 belirtimine uygun olayları kabul eder.
Daha fazla bilgi için bkz . CloudEvents desteği .
CloudEvents con çadır modu s
CloudEvents belirtimi kullanabileceğiniz üç çadır modu tanımlar: ikili, yapılandırılmış ve toplu.
Önemli
Herhangi bir eksiyle çadır modu metin (JSON, metin/*, vb.) veya ikili kodlanmış olay verilerini değiştirebilirsiniz. İkili con çadır modu yalnızca ikili veri göndermek için kullanılmaz.
Con çadır modu s, kullandığınız kodlama, ikili veya metinle ilgili değildir, olay verilerinin ve meta verilerinin nasıl tanımlandığı ve değiştirildiğinden söz eder. Yapılandırılmış con çadır modu tek bir yapı kullanır; örneğin, bağlam özniteliklerinin ve olay verilerinin HTTP yükünde bir araya geldiği bir JSON nesnesi. İkili con çadır modu HTTP üst bilgilerine eşlenen bağlam özniteliklerini ve içindeki medya türü değerine Content-Type
göre kodlanmış HTTP yükü olan olay verilerini ayırır.
Daha fazla bilgi için bkz. CloudEvents con çadır modu s.
İletiler ve olaylar
CloudEvent genellikle bir sistemde bir oluşumu, yani sistem durumu değişikliğini duyuran olay verilerini taşır. Ancak CloudEvents'i kullanırken her türlü veriyi iletebilirsiniz. Örneğin, aşağı akış uygulamasına eylem istemek üzere bir komut iletisi göndermek için CloudEvents değişim biçimini kullanmak isteyebilirsiniz. Bir diğer örnek de Event Grid'in MQTT aracısından gelen iletileri bir konuya yönlendirmenizdir. Bu senaryoda, CloudEvents zarfında sarmalanmış bir MQTT iletisini yönlendirmiş olursunuz.
Çekme teslimi
Çekme teslimi ile uygulamanız, kuyruk benzeri semantiği kullanarak CloudEvents'i okumak için Event Grid'e bağlanır.
Çekme teslimi şu olay tüketimi avantajlarını sunar:
Olayları kendi hızınızda, uygun ölçekte veya uygulamanızın desteklediği giriş hızında kullanın.
Olayları kendi seçtiğiniz bir zamanda kullanın. Örneğin, iş gereksinimleri göz önüne alındığında iletiler gece işlenir.
Verilerinizin özel IP alanı kullanması için olayları özel bağlantı üzerinden kullanın.
Not
- Ad alanları, tek bir konu türü içeren daha basit bir kaynak modeli sağlar. Event Grid şu anda kendi uygulama olaylarınızı ad alanı konuları aracılığıyla yayımlamayı desteklemektedir. Ad alanı konularını kullanarak Azure hizmetlerinden veya iş ortağı SaaS sistemlerinden olayları kullanamazsınız. Ayrıca, bir ad alanında sistem konuları, etki alanı konuları veya iş ortağı konuları oluşturamazsınız.
- Ad alanı konuları CloudEvents JSON biçimini destekler.
Kuyruk olayı abonelikleri
Olaylar alınırken veya olay durumunu yöneten işlemler kullanılırken, uygulama bir ad alanı HTTP uç noktası, konu adı ve kuyruk olayı aboneliğinin adını belirtir. Bir kuyruk olayı aboneliğinin deliveryMode'u "queue" olarak ayarlanmıştır. Kuyruk olayı abonelikleri, çekme teslim API'sini kullanarak olayları kullanmak için kullanılır. Bu kaynakların nasıl oluşturulacağı hakkında daha fazla bilgi için bkz. Ad alanları, konular ve olay abonelikleri oluşturma.
Olaylar için filtreleme ölçütlerini tanımlamak için bir olay aboneliği kullanırsınız ve bunu yaparken, bu olay aboneliği aracılığıyla tüketilebilecek olay kümesini etkili bir şekilde tanımlarsınız. Bir veya daha fazla abone (tüketici) uygulaması aynı ad alanı uç noktasına bağlanabilir ve aynı konuyu ve olay aboneliğini kullanabilir.
Çekme teslim işlemleri
Uygulamanız çekme teslimi ile çalışırken aşağıdaki işlemleri kullanır.
- Event Grid'e tek bir istek kullanarak bir veya daha fazla olayı okumak için alma işlemi kullanılır. Varsayılan olarak, aracı olayların kullanılabilir duruma gelmesi için 60 saniyeye kadar bekler. Örneğin, olaylar ilk yayımlandığında teslim edilebilir hale gelir. Başarılı bir alma isteği sıfır veya daha fazla olay döndürür. Olaylar kullanılabilir durumdaysa, istenen olay sayısına kadar mümkün olduğunca çok kullanılabilir olay döndürür. Event Grid ayrıca okunan her olay için bir kilit belirteci döndürür.
- Kilit belirteci, durumunu denetlemek için kullanabileceğiniz bir olayı tanımlayan bir tanıtıcı türüdür.
- Bir tüketici uygulaması bir olayı alıp işlediğinde bu olayı kabul eder . Bu işlem Event Grid'e olayı silmesini bildirir, böylece başka bir istemciye yeniden teslim edilmez. Tüketici uygulaması, süresi dolmadan önce kilit belirteçlerini belirterek tek bir istekle bir veya daha fazla belirteci kabul eder.
Diğer bazı durumlarda tüketici uygulamanız olayları serbest bırakmak veya reddetmek isteyebilir.
Tüketici uygulamanız , Event Grid'e bu olayı işlemeye hazır olmadığını ve yeniden teslim için kullanılabilir hale getirildiğini belirten bir olay yayınlar . Bunu, Event Grid'e geri döndürülecek olayları tanımlayan kilit belirteçleriyle yayın işlemini çağırarak yapar. Uygulamanız, olayın hemen yayınlanması gerekip gerekmediğini veya olay yeniden teslim için kullanılabilir duruma gelmeden önce bir gecikmenin kullanılıp kullanılmayabileceğini denetleyebilir.
Tüketici uygulamanızın olayı işlemesini engelleyen bir koşul (büyük olasılıkla kalıcı) varsa bir olayı reddetmeyi tercih edebilirsiniz. Örneğin, hatalı biçimlendirilmiş bir ileti başarıyla ayrıştırılamadıklarından reddedilebilir. Reddedilen olaylar, teslim edilemeyen bir hedef varsa, geçersiz harfle kaydedilir. Aksi takdirde, bırakılırlar.
Çekme teslim işlemlerinin çalıştırıldığı kapsam
Bir alma, onaylama, bırakma, reddetme veya yenileme kilit işlemini çağırdığınızda, bu eylemler olay aboneliği bağlamında gerçekleştirilir. Örneğin, bir olayı kabul ederseniz, bu olay artık onay eylemi çağrılırken kullanılan olay aboneliği aracılığıyla kullanılamaz. Diğer olay aboneliğinde hala "aynı" olay kullanılabilir olabilir. Bunun nedeni olay aboneliğinin yayımlanan olayların bir kopyasını almasıdır. Bu olay kopyaları, olay abonelikleri arasında birbirinden etkili bir şekilde farklıdır. Her olayın diğer olaylardan bağımsız kendi durumu vardır.
Çekme teslimi kullanılarak olaylar alınırken veri şekli
Event Grid, çekme teslimi kullanarak olayları teslim ederken olay ve brokerProperties nesnelerini içeren bir nesne dizisi içerir. Olay özelliğinin değeri, yapılandırılmış con çadır modu olarak sunulan CloudEvent değeridir. brokerProperties nesnesi, teslim edilen CloudEvent ile ilişkili kilit belirtecini içerir. Aşağıdaki json nesnesi, iki olay döndüren bir alma işleminden alınan örnek bir yanıttır:
{
"value": [
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
"deliveryCount": 2
},
"event": {
"specversion": "1.0",
"id": "A234-1234-1235",
"source": "/mycontext",
"time": "2018-04-05T17:31:00Z",
"type": "com.example.someeventtype",
"data": "some data"
}
},
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
"deliveryCount": 1
},
"event": {
"specversion": "1.0",
"id": "B688-1234-1235",
"source": "/mycontext",
"type": "com.example.someeventtype",
"time": "2018-04-05T17:31:00Z",
"data": {
"somekey" : "value",
"someOtherKey" : 9
}
}
}
]
}
Gönderme ve çekme teslimi
Event Grid, HTTP kullanarak gönderme ve çekme olayı teslimi destekler. Anında iletme ile event grid'in olayları gönderdiği bir olay aboneliğinde, web kancasında veya Azure hizmetinde bir hedef tanımlarsınız. Çekme teslimi ile abone uygulamaları olayları kullanmak için Event Grid'e bağlanır. Çekme teslimi, Event Grid ad alanındaki konular için desteklenir.
Önemli
Event Hubs, ad alanı konularına yönelik abonelikler için bir hedef olarak desteklenir. Gelecek sürümlerde Event Grid Ad Alanları, Event Grid Basic'te mevcut olan tüm hedefleri ve ek hedefleri destekleyecektir.
Gönderme teslimi ve çekme teslimi ne zaman kullanılır?
Çekme veya gönderme teslimini ne zaman kullanacağınıza karar vermenize yardımcı olacak genel yönergeler aşağıdadır.
Çekme teslimi
- Olayları ne zaman alacağınız ile ilgili tam denetime ihtiyacınız vardır. Örneğin, uygulamanız her zaman çalışır durumda olmayabilir, yeterince kararlı olmayabilir veya verileri belirli zamanlarda işleyebilirsiniz.
- Olay tüketimi üzerinde tam denetime sahip olmanız gerekir. Örneğin, tüketici uygulamanızdaki bir aşağı akış hizmeti veya katmanında olayları işlemenizi engelleyen bir sorun vardır. Bu durumda, çekme teslim API'si tüketici uygulamasının daha sonra teslim edilebilmesi için zaten okunan bir olayı aracıya geri göndermesine olanak tanır.
- Olayları alırken özel bağlantılar kullanmak istiyorsunuz. Bu, gönderme teslimiyle değil yalnızca çekme teslimiyle mümkündür.
- Bir uç noktayı kullanıma sunma ve anında iletme teslimini kullanma olanağınız yoktur, ancak olayları kullanmak için Event Grid'e bağlanabilirsiniz.
Anında iletme teslimi
- Sistem durumu değişikliğinin oluştuğuna karar vermek için sürekli yoklama yapmaktan kaçınmak istiyorsunuz. Durum değişiklikleri gerçekleştiğinde olayları size göndermek için Event Grid'i kullanmayı tercih edebilirsiniz.
- Giden çağrı yapabilen bir uygulamanız var. Örneğin, kuruluşunuz veri sızdırma konusunda endişeli olabilir. Ancak, uygulamanız olayları genel uç nokta üzerinden alabilir.
Sonraki adımlar
Aşağıdaki makaleler, Event Grid'i kullanma hakkında bilgi sağlar veya kavramlar hakkında ek bilgiler sağlar.