Dead Letter Queue Nedir?

İngilizce: Dead Letter Queue

Dead letter queue, işlenemeyen mesajları ana kuyruktan ayırarak hata incelemesi, yeniden deneme ve veri kaybını önlemeye yardım eder.

Dead Letter Queue Nedir?

Dead letter queue (DLQ), mesaj kuyruğunda belirli sayıda denemeye rağmen işlenemeyen mesajların ana akışı durdurmadan ayrı bir kuyruğa taşınmasıdır. Böylece sorunlu mesaj kaybolmaz, ama diğer sağlıklı mesajların işlenmesini de engellemez.

Örneğin bir sipariş mesajında zorunlu customerId alanı eksikse tüketici servis hata verebilir. Aynı mesaj sonsuza kadar tekrar denenirse kuyruk tıkanır. DLQ bu mesajı kenara alır, ekip hatayı inceleyebilir ve gerekirse düzeltilmiş biçimde yeniden kuyruğa koyar.

Nasıl Çalışır?

Mesaj işleme sistemlerinde genellikle yeniden deneme sayısı, bekleme süresi, hata türü ve DLQ hedefi tanımlanır. Mesaj her başarısız olduğunda retry politikası çalışır; limit dolduğunda mesaj dead letter queue’ya aktarılır.

İyi bir DLQ tasarımında şunlar bulunur:

  • Hata nedeni, deneme sayısı ve zaman damgası gibi metadata
  • Alarm ve izleme kuralı
  • Mesajı düzeltip yeniden işleme alma prosedürü
  • Zehirli mesajların sonsuz döngüye girmesini engelleyen kontrol
  • Kişisel veya hassas veri içeren payload’lar için saklama politikası

İş Dünyasında Kullanımı

DLQ ödeme, fatura, bildirim, stok güncelleme ve entegrasyon işlerinde veri kaybı riskini azaltır. Mesaj kuyruğu kullanan sistemlerde hatayı yutmak yerine görünür kılmak operasyonel güvenilirlik için önemlidir.

Kafka, RabbitMQ, AWS SQS ve benzeri sistemlerde DLQ yaklaşımı farklı biçimlerde uygulanır. Asıl değer kuyruk oluşturmaktan değil, hatalı mesajların düzenli incelenmesi ve tekrar işlenmesi için net süreç kurulmasından gelir.