İleti oturumları

Azure Service Bus oturumları, sınırsız ilişkili ileti dizilerinin ortak ve sıralı işlenmesini sağlar. Oturumlar ilk başta, ilk çıkar (FIFO) ve istek-yanıt desenlerde kullanılabilir. Bu makalede, oturumları kullanarak bu desenleri nasıl uygulayan bir Service Bus.

Not

Oturumların temel Service Bus oturumları desteklemez. Standart ve premium katmanlar oturumları destekler. Bu katmanlar arasındaki farklar için bkz. Service Bus fiyatlandırması.

İlk gelen, ilk çıkar (FIFO) deseni

Bu oturumlarda FIFO garantisi Service Bus oturumları kullanın. Service Bus, iletiler arasındaki ilişkinin doğası konusunda belirleyici değildir ve ayrıca bir ileti dizisinin nereden başeceğini veya biteceğini belirlemek için belirli bir model tanımlamaz.

Herhangi bir gönderen bir konu başlığına veya kuyruğa ileti gönderirken oturum kimliği özelliğini oturuma özgü bir uygulama tanımlı tanımlayıcıya ayarerek oturum oluşturabilir. AMQP 1.0 protokol düzeyinde bu değer group-id özelliğiyle eşler.

Oturuma bağlı kuyruklarda veya aboneliklerde oturum kimliğine sahip en az bir ileti olduğunda oturumlar ortaya gelir. Oturum mevcut olduğunda, oturumun süresi dolduğunda veya kaybolduğunda için tanımlı bir zaman veya API yoktur. Teorik olarak, bugün bir oturum için bir ileti, bir yıl içinde bir sonraki ileti ve oturum kimliği eş zamanlı olarak eş değere sahipse, oturum aynı Service Bus olabilir.

Ancak genellikle bir uygulama, bir dizi ilişkili ilanın nereden başladığına ve sona erdiğinde net bir şekilde anlır. Service Bus belirli bir kural ayarlamaz. Örneğin, uygulamanız ilk iletinin Label özelliğini başlatarak , ara iletilerin içeriğine ve son iletinin bitimini ayarlamaya başlayabilir. İçerik iletilerinin göreli konumu, SequenceNumber başlangıç iletisinden SequenceNumber delta iletisi olarak hesaplandırabilirsiniz.

Önemli

Bir kuyrukta veya abonelikte oturumlar etkinleştirildiğinde, istemci uygulamaları artık normal iletiler gönderemeyecek/alameyecek. Tüm iletiler bir oturumun parçası olarak gönder (oturum kimliğini ayarerek) ve oturum kabul edilerek alınmıştır.

Oturumlar için API'ler kuyruk ve abonelik istemcilerde mevcuttur. Oturumların ve iletilerin ne zaman alınacaklarını kontrol eden bir imperative model ve alma döngüsü yönetiminin karmaşıklığını gizleyen işleyici tabanlı bir model vardır.

Örnekler için Sonraki adımlar bölümündeki bağlantıları kullanın.

Oturum özellikleri

Oturumlar, siparişli teslimi koruyarak ve garanti ederken, birbirine ekli ileti akışlarının eş zamanlı olarak birden çok kez daha fazla kez yeniden yalıttırmalarını sağlar.

Oturumlar özelliğinin sıralı teslimi nasıl korumasını gösteren diyagram.

Oturum alıcısı, oturum kabul eden bir istemci tarafından oluşturulur. Oturum bir istemci tarafından kabul edilerek tutulsa, istemci kuyrukta veya abonelikte o oturumun oturum kimliğine sahip tüm iletilere özel bir kilit tutar. Ayrıca daha sonra gelecek oturum kimliğine sahip tüm iletilerde özel kilitler de tutar.

Kilit, alıcıda kapatma yöntemlerini çağırarak veya kilidin süresi dolduğunda serbest bırakıldı. Alıcının kilitleri yenilemek için de yöntemleri vardır. Bunun yerine, kilidi yenilemeye devam etmek istediğiniz süreyi belirterek otomatik kilit yenileme özelliğini kullanabilirsiniz. Oturum kilidi bir dosyada özel kilit olarak kabul edilmelidir; başka bir anlama gelir, uygulamanın artık ihtiyacı kalmadan oturumu kapatması ve/veya başka ileti beklemesi gerekmeyecektir.

Kuyruktan birden çok eş zamanlı alıcı çekince, belirli bir oturuma ait iletiler o oturum için kilidi tutan belirli bir alıcıya sevk edilir. Bu işlemle, bir kuyrukta veya abonelikte araya alınan ileti akışı, farklı alıcılara temiz bir şekilde birden çok kez eklenir ve kilit yönetimi hizmet tarafında, şirket içinde Service Bus.

Önceki çizimde üç eşzamanlı oturum alıcısı gösterilmiştir. = 4 ile bir Oturumun etkin, sahip olan istemcisi yoktur; başka bir ifadeyle bu SessionId oturumdan hiçbir ileti teslim edilmedi. Oturum, alt kuyruk gibi birçok şekilde çalışır.

Oturum alıcısı tarafından düzenlenen oturum kilidi, göz atma kilidi kapatma modu tarafından kullanılan ileti kilitleri için bir çatıdır. Oturumda yalnızca bir alıcı kilite sahip olabilir. Alıcı çok sayıda uçuşta iletiye sahip olabilir, ancak iletiler sırayla alınmıştır. Bir iletiyi bırakmak, sonraki alma işlemiyle aynı iletinin yeniden servis ed iletiyi göndermesine neden olur.

İleti oturumu durumu

İş akışları yüksek ölçekli, yüksek kullanılabilirlikli bulut sistemlerinde işlendiğinde, belirli bir oturumla ilişkili iş akışı işleyicisi beklenmeyen hatalardan kurtarılmalı ve kısmen tamamlanmış işi farklı bir işlemde veya makinenin başladığı yerden sürdürene kadar devam edebilir.

Oturum durumu özelliği, oturum yeni bir işlemci tarafından edinilirken bu oturuma göre kayıtlı işleme durumunun anında kullanılabilir hale gelir, böylece aracı içindeki bir ileti oturumunun uygulama tanımlı ek açıklamasını sağlar.

Service Bus perspektifinden bakıldığında, ileti oturumu durumu bir iletinin boyutunda verileri tutabilirsiniz, bu da Service Bus Standard için 256 KB ve Service Bus Premium için 100 MB'tır. Bir oturuma göre işlem durumu oturum durumunun içinde tutul olabilir veya oturum durumu bu tür bilgileri tutan bir depolama konumunu veya veritabanı kaydını işaret ediyor olabilir.

Oturum durumunu (SetState ve GetState) yönetme yöntemleri oturum alıcı nesnesinde bulunabilir. Daha önce oturum durumu olmayan bir oturum GetState için null başvuru döndürür. Önceden ayarlanmış oturum durumu, alıcının SetState yöntemine null değeri geçerek temiz olabilir.

Oturum durumu, bir oturumda tüm iletiler tüketilse bile temizilmemesi (null döndürerek) olduğu sürece kalır.

Kuyrukta veya abonelikte gerçekleştirilen oturum durumu, varlığın depolama kotasına göre sayılır. Bu nedenle, uygulama bir oturumla tamamlandığında, dış yönetim maliyetini önlemek için uygulamanın elde tutma durumunu temizlemesi önerilir.

Teslim sayısı etkisi

Oturumlar bağlamında ileti başına teslim sayısı tanımı, oturum olmamasında tanımdan biraz farklıdır. Teslim sayısı artırılırken özetleyen bir tablo aşağıdadır.

Senaryo İletinin teslim sayısı artırıldı mı?
Oturum kabul edilir, ancak oturum kilidinin süresi dolar (zaman aşımı nedeniyle) Yes
Oturum kabul edilir, oturum içindeki iletiler tamamlanmaz (kilitli olsalar bile) ve oturum kapatılır Hayır
Oturum kabul edilir, iletiler tamamlanır ve oturum açıkça kapatılır Yok (Standart akıştır. Burada iletiler oturumdan kaldırılır)

İstek-yanıt deseni

İstek-yanıt deseni, gönderen uygulamanın bir istek göndermesini sağlayan ve alıcının gönderen uygulamaya doğru şekilde yanıt göndermesi için bir yol sağlayan iyi kurulmuş bir tümleştirme düzenidir. Bu düzende genellikle uygulamanın yanıt göndermesi için kısa süreli bir kuyruk veya konu başlığı gerekir. Bu senaryoda, oturumlar benzer semantik ile basit bir alternatif çözüm sağlar.

Birden çok uygulama, gönderen uygulamayı benzersiz olarak tanımlamak için belirli bir üst bilgi parametresi ayarlanmış şekilde isteklerini tek bir istek kuyruğuna gönderebilir. Alıcı uygulama, kuyruğa gelen istekleri işebilir ve oturum etkinleştirilmiş kuyrukta yanıtlar gönderebilir ve oturum kimliğini gönderenin istek iletisine gönderdiği benzersiz tanımlayıcıya ayarlar. İsteği gönderen uygulama daha sonra belirli oturum kimliğine ileti alır ve yanıtları doğru şekilde işler.

Not

İlk istekleri gönderen uygulamanın oturum kimliğini biliyor olması ve yanıt beklediği oturumun kilitlenmesi için oturumu kabul etmek için bunu kullanması gerekir. Uygulama örneğini oturum kimliği olarak benzersiz olarak tanımlayan bir GUID kullanmak iyi bir fikirdir. Yanıtların belirli alıcılar tarafından kilitlenebilir ve işlenebilir durumda olduğundan emin olmak için kuyruk için oturum alıcısı üzerinde oturum işleyicisi veya zaman aşımı belirtilmemiş olması gerekir.

Sonraki adımlar

Azure portal, PowerShell, CLI, Resource Manager şablon, .NET, Java, Python ve JavaScript kullanarak kuyruk oluştururken ileti oturumlarını etkinleştirebilirsiniz. Daha fazla bilgi için bkz. İleti oturumlarını etkinleştirme.

Azure hizmet özelliklerini keşfetmek için örnekleri tercih Service Bus deneyin.

Eski .NET ve Java istemci kitaplıkları için örnekleri aşağıda bulabilirsiniz: