Aracılığıyla paylaş


Azure Service Bus - İleti süre sonu (Yaşam Süresi)

İletideki yük veya iletinin alıcıya ilettiği komut veya sorgu, neredeyse her zaman bir tür uygulama düzeyi son kullanma tarihine tabidir. Böyle bir son tarihten sonra içerik artık teslim edilmez veya istenen işlem artık yürütülmez. Kuyrukların ve konuların genellikle uygulamaların veya uygulama bölümlerinin kısmi çalıştırmaları bağlamında kullanıldığı geliştirme ve test ortamlarında, bir sonraki test çalıştırmasının temiz başlayabilmesi için, zincirlenmiş test iletilerinin otomatik olarak kaldırılması da tercih edilir.

Yaşam süresi ve sonlanma süresi UTC itibarıyla doluyor

Göreli süreyi belirten yaşam süresi sistem özelliğini ayarlayarak tek tek herhangi bir iletinin süre sonunu denetleyebilirsiniz. İletiyi varlığa sıraladığınızda süre sonu mutlak bir anlık duruma gelir. Bu sırada, expires-at-utc özelliği enqueued-time-utc + time-to-live değerini alır. Aracılı mesajdaki yaşam süresi (TTL) ayarı, hiçbir istemci etkin olarak dinlemediğinde uygulanmaz.

Not

Süresi dolmuş iletileri aracı hemen kaldırmayabilir. Aracı, iletinin süresi dolduğunda, birimin etkin kullanımda olup olmadığına bağlı olarak bu iletileri isteksizce süresi dolmuş olarak işaretleyebilir. Bu nedenle, ileti süre sonu kullanırken yanlış bir ileti sayısı gözlemleyebilirsiniz ve hatta bir göz atma işlemi sırasında bu iletileri görebilirsiniz. Ancak, iletileri alırken süresi dolan ileti dahil değildir.

Süre sonu(utc)anlık değerini geçtikten sonra iletiler alınamaz hale gelir. Süresi dolması, hâlihazırda teslim edilmek üzere kilitli olan iletileri etkilemez. Bu iletiler hala normal şekilde işlenir. Kilidin süresi dolarsa veya ileti bırakılırsa, süre sonu hemen geçerli olur. İleti kilit altındayken, uygulama süresi dolmuş bir iletiye sahip olabilir. Uygulamanın işlemeye devam etmeye istekli olup olmadığı veya iletiyi bırakmayı seçmesi uygulayıcıya bağlı.

Milisaniye veya saniyeler düzeyinde son derece düşük TTL, alıcı uygulamalar bunları almadan önce iletilerin süresinin dolmasına neden olabilir. Uygulamanız için en çok çalışan en yüksek TTL'yi düşünün.

Zamanlanmış iletiler

Zamanlanmış iletiler için, iletinin alınmak üzere kuyrukta görünmesini istediğiniz sıra saatini belirtirsiniz. Mesajın Service Bus'a gönderildiği zaman, mesajın kuyruğa alındığı zamandan farklıdır. İletinin geçerlilik süresi, iletinin Service Bus'a gönderildiği zamana değil, kuyruğa alındığı saate bağlıdır. Bu nedenle, utc'de süresi dolma zamanı hala sıralanma zamanı + yaşam süresi olmaktadır.

Örneğin, ScheduledEnqueueTimeUtc'yi UtcNow'den itibaren beş dakika ve TimeToLive'yi 10 dakika olarak ayarlarsanız, ileti 5 + 10 = 15 dakika sonra süresi dolar. İleti beş dakika sonra kuyrukta belirir ve 10 dakikalık geri sayım o andan itibaren başlar.

Varlık düzeyi süresinin dolması

Kuyruğa veya konuya gönderilen tüm iletiler, varlık düzeyinde ayarladığınız varsayılan süre sonu süresine tabidir. Ayrıca bu son kullanma tarihini oluşturma sırasında portalda ayarlayabilir ve daha sonra düzenleyebilirsiniz. Varsayılan süre sonu, yaşam süresi açıkça ayarlı olmayan varlığa gönderilen tüm iletiler için geçerlidir. Varsayılan süre sonu, yaşam süresi değeri için bir tavan olarak da çalışır. İletinin yaşam süresi varsayılan değerden daha uzunsa, sistem iletiyi sorgulamadan önce bunu sessizce varsayılan ileti yaşam süresi değerine ayarlar.

Expires-at-utc özelliği tasarım gereğidir. Mesaj TTL'si ayarlanmazsa ve yalnızca varlık TTL'si ayarlanırsa, expires-at-utc, Receive/Peeklock yolunda hesaplanan ama Peek yolunda hesaplanmayan bir değerdir. İletide TTL varsa, sistem ileti gönderildiğinde geçerlilik süresi sona erme zamanı-utc olarak hesaplar ve bunu depolar. Bu durumda, Peek doğru expires-at-utc değerlerini döndürür.

Not

  • Aracılı ileti için varsayılan yaşam süresi değeri, aksini belirtmezseniz, imzalı bir 64 bit tamsayı için mümkün olan en büyük değerdir.
  • Mesajlaşma varlıkları (kuyruklar ve konular) için varsayılan süre sonu, Service Bus standart ve premium katmanları için imzalı bir 64 bit tamsayı için de mümkün olan en büyük değerdir. Temel katman için varsayılan (en fazla) süre sonu 14 gündür.
  • Konu, abonelikten daha küçük bir TTL belirtiyorsa, konu TTL'si uygulanır.

İsteğe bağlı olarak süresi dolan iletileri bir teslim edilemeyen ileti kuyruğuna taşıyabilirsiniz. Bu ayarı program aracılığıyla veya Azure portalını kullanarak yapılandırabilirsiniz. Seçeneği devre dışı bırakırsanız süresi dolan iletiler bırakılır. Aracının kullanıcı özellikleri bölümünde depolanan ölü harf nedeni özelliğini değerlendirerek, süresi dolmuş ve ölü harf kuyruğuna taşınmış iletileri diğer ölü harf durumundaki iletilerden ayırt edebilirsiniz.

İleti, kilit altındayken sona ermeden korunursa ve varlıkta bayrak ayarlanmışsa, kilit bırakıldığında veya süresi dolduğunda ileti, teslim edilemeyen ileti kuyruğuna taşınır. Ancak, ileti başarıyla tamamlanırsa sistem iletiyi taşımaz. Uygulamanın, sözde son kullanım tarihine rağmen iletiyi başarıyla işlediğini varsayar. İleti kilitleri ve düzenleme hakkında daha fazla bilgi için bkz . İleti aktarımları, kilitler ve kapatma.

Yaşam süresi ile süresi dolan otomatik (ve işlemsel) teslimsiz yazmanın birleşimi, son tarihe ulaşıldığında bir işleyiciye veya son tarih altındaki bir işleyici grubuna verilen işin işlenmek üzere alınıp alınmayacağı konusunda güven oluşturmaya yönelik değerli araçlardır.

Örneğin, işleri ölçek kısıtlı bir arka uçta güvenilir bir şekilde yürütmesi gereken ve zaman zaman trafik artışlarıyla karşılaşan veya bu arka ucun kullanılabilirlik bölümlerine karşı yalıtılmış olmak isteyen bir web sitesi düşünün. Normal durumda, gönderilen kullanıcı verilerinin sunucu tarafı işleyicisi bilgileri kuyruğa gönderir ve ardından işlemin başarılı bir şekilde yanıt kuyruğuna işlenmesini onaylayan bir yanıt alır. Bir trafik artışı varsa ve arka uç işleyicisi birikim öğelerini zamanında işleyemiyorsa, süresi dolan işler ölü harf kuyruğuna geri gönderilir. Etkileşimli kullanıcıya, istenen işlemin normalden biraz daha uzun sürdüğü bildirilebilir ve ardından istek, son işleme sonucunun kullanıcıya e-postayla gönderildiği bir işleme yolu için farklı bir kuyruğa konulabilir.

Geçici varlıklar

Service Bus kuyruklarını, konu başlıklarını ve aboneliklerini geçici varlıklar olarak oluşturabilirsiniz. Sistem, belirli bir süre kullanılmadığında bu varlıkları otomatik olarak kaldırır.

Otomatik temizleme, varlıkların dinamik olarak oluşturulduğu ve test veya hata ayıklama çalıştırması sırasında kesintiye uğraması nedeniyle kullanımdan sonra temizlenmediği geliştirme ve test senaryolarında faydalıdır. Bir uygulama yanıt kuyruğu gibi dinamik varlıklar oluşturduğunda, yanıtları bir web sunucusu işlemine geri almak için veya nesne örneği kaybolduğunda bu varlıkları güvenilir bir şekilde temizlemenin zor olduğu nispeten kısa ömürlü başka bir nesnede de kullanışlıdır.

Varlıkta idle özelliğinde otomatik silme özelliğini ayarlayarak özelliği etkinleştirin. Bu özelliği, sistem tarafından otomatik olarak silinmeden önce varlığın boşta (kullanılmamış) olması gereken süre olarak ayarlayın. Bu özelliğin en düşük değeri 5 dakikadır.

Önemli

Azure Resource Manager kilit düzeyinin CanNotDelete ad alanında veya daha üst düzeyde ayarlanması, AutoDeleteOnIdle özellikli varlıkların silinmesini engellemez. Varlığın silinmesini istemiyorsanız özelliğini olarak AutoDeleteOnIdleayarlayınDataTime.MaxValue.

Boşta kalma durumu

Varlıklar (kuyruklar, konular ve abonelikler) için boşta kalma olarak kabul edilen durumlar şunlardır:

Varlık Boşta olarak kabul edilenler
Sıra
  • Gönderme yok
  • Alıcı yok
  • Kuyrukta güncelleştirme yok
  • Zamanlanmış ileti yok
  • Göz atma veya bakma yok
Konu
  • Gönderme yok
  • Konu başlığında güncelleştirme yok
  • Zamanlanmış ileti yok
  • Konunun aboneliklerine yönelik işlem yapılmadı (sonraki satıra bakın)
Abonelik
  • Alıcı yok
  • Abonelikte güncelleştirme yok
  • Aboneliğe yeni kural eklenmedi
  • Göz atma veya bakış yok

Önemli

Kuyrukta veya abonelikte otomatik iletmeyi ayarlarsanız, bu, bir alıcının kuyrukta veya abonelikte alma işlemi yapmasıyla aynıdır. Bu varlıklar boşta değil.

SDK

Yazılım Geliştirme Setlerini (SDK' lar) kullanarak yaşam süresi özelliğini ayarlayın.

Service Bus kavramlarını henüz bilmiyorsanız bkz. Service Bus kavramları ve Service Bus kuyrukları, konuları ve abonelikleri.

Azure Service Bus'ın gelişmiş özellikleri hakkında bilgi edinmek için bkz . Gelişmiş özelliklere genel bakış.