Aracılığıyla paylaş


Azure Service Bus'ta iletileri toplu silme (Önizleme)

Azure Service Bus, ayrılmış uygulamalar ve hizmetler arasında ileti gönderip almanızı sağlayan, tam olarak yönetilen bir kurumsal tümleştirme ileti aracısıdır. Ancak, bazen bir kuyruktan veya abonelikten iletileri işlemeden silmek isteyebilirsiniz; örneğin, süresi dolmuş, bozulmuş veya ilgisiz. Bu makalede, Azure Service Bus'ta iletileri toplu olarak silme işlemi gösterilmektedir.

İletileri Toplu silme senaryoları

Azure Service Bus'ta iletileri toplu silme özelliğini kullanmak isteyebileceğiniz çeşitli senaryolar vardır. Bunlardan bazıları şunlardır:

  • Süresi Dolan İletiler: Yaşam süresi (TTL) değerini aşan ve teslim edilemeyen ileti kuyruğunda olan iletileri silin.
  • Başarısız Doğrulama veya İşleme: Doğrulama veya işleme mantığı başarısız olan ve teslim edilemeyen ileti kuyruğunda olan iletileri kaldırın.
  • Ilgisiz İletiler: Artık etkin kuyruktan uygulama mantığınızla ilgili olmayan iletileri silin.
  • Yinelenenleri veya Yanlış İçeriği İşleme: Yinelenen veya yanlış iletileri etkin kuyruktan kaldırın.

İletileri toplu silme özelliğini kullanarak, bir kuyruktan veya abonelikten birden çok iletiyi tek tek silmek yerine tek bir işlemle silebilirsiniz. Silme işlemi hizmet tarafında yapıldığından, iletileri silmeden önce almanız gerekmez. Bu yöntem hem hizmet isteği sayısını hem de ağ gecikme süresini en aza indirir.

Önemli

Şu anda Toplu silme, bölümlenmiş varlıklarda desteklenmemektedir. Toplu silme çağrısında en fazla 4000 ileti silebilirsiniz. Toplu silme işlemi en iyi çaba temelinde yapılır ve tek API çağrısında tam messageCount'un silineceğini garanti etmez.

Service Bus'ta iletileri toplu silme

Service Bus Alıcısı nesnesinde DeleteMessagesAsync'i çağırarak iletileri silebilirsiniz. Sunucu tarafında iki DeleteMessagesAsync parametre gerekir: messageCount ve beforeEnqueueTime.

  • messageCount: Silinecek ileti sayısı. Hizmet bu sınırdan daha az iletiyi silebilir.
  • beforeEnqueueTime: Silme işleminin kesme süresini temsil eden isteğe bağlı bir DateTimeOffset(UTC) değeridir. Yalnızca bu süreden önce sıraya alınan iletiler silinir.

Ayrıca, tüm iletileri varlıktan temizlemek için PurgeMessagesAsync'i çağırabilirsiniz.

Azure portalı kullanarak

Azure portalında bulunan Service Bus gezginini kullanarak iletileri varlıktan da temizleyebilirsiniz. İletileri temizlemek için aşağıdaki adımları izleyebilirsiniz:

  1. İletileri silmek istediğiniz varlığın 'Service Bus gezgini' dikey penceresine gidin.
  2. Service Bus gezgini açılan listesinde 'Alma modu'nu seçin.

Alma modunun seçili olduğu açılan menü ekran görüntüsü.

  1. Anlık görüntüde gösterildiği gibi iletileri temizle seçeneğine tıklayın.

Seçili iletileri temizle seçeneğinin ekran görüntüsü.

  1. Başka bir iletişim kutusu görüntülenir ve temizleme iletileri işlemini yürütmek için 'purge' yazın.

Onaylamak için Temizle girişinin ekran görüntüsü.

Bu işlemleri gerçekleştirmek için Azure SDK'ları kullanılırken beforeEnqueueTime parametresi varsayılan olarak geçerli UTC saati (DateTime.UtcNow()) olarak belirlenir. İstenmeyen iletinin silinmesini önlemek için doğru değerleri sağladığınızı güvence altına almak önemlidir.

Not

Temizleme işlemi, birden çok API çağrısı içerdiğinden CPU kullanımının artmasına neden olabilir. Temizleme sırasında, kilitli iletiler kaldırılmaya uygun değildir ve varlıkta kalır.

Sonraki adımlar

Azure Service Bus özelliklerini keşfetmek için istediğiniz dilde örnekleri deneyin: