Tüm Ürünler
Search
Belge Merkezi

ApsaraMQ for RocketMQ:Dead-letter messages

Son Güncelleme:Oct 04, 2026

Bir mesajın tüketimi başarısız olursa mesaj yeniden deneme işlemi otomatik olarak tetiklenir. Maksimum yeniden deneme sayısına ulaşıldıktan sonra mesaj hala tüketilemiyorsa dead-letter message haline gelir. ApsaraMQ for RocketMQ bu dead-letter mesajları, sonraki iş kurtarma veya geriye dönük analizler için belirli bir konuda saklamanıza olanak tanır. Bu konu, dead-letter mesajlar için senaryoları, dead-letter ilkelerini, sınırlamaları, yapılandırma yöntemlerini ve kullanım notlarını açıklar.

Senaryolar

  • Tipik dead-letter mesaj işleme senaryosu

    Mesaj yeniden denemeleri başarısız olduktan sonra dead-letter mesajları belirlenmiş bir dead-letter konusuna kaydedin. Hata yolu işlemeyi veya dead-letter analizini etkinleştirmek için bu mesajları tüketip işlemek üzere ayrı bir consumer group oluşturun.

  • Dead-letter mesajların tipik yanlış kullanımı

    Dead-letter mesajları birden çok katman üzerinden yönlendirir veya orijinal konuya geri dökerseniz yeniden deneme döngüsüne tekrar girebilirler. Bu durum çığ etkisini tetikleyebilir.

Dead-letter policy

Mesajların dead letter haline gelme durumu

Bir mesaj maksimum yeniden deneme sayısına ulaştıktan sonra başarılı bir şekilde tüketilmezse teslim edilmeyi durdurur ve dead-letter message haline gelir.

死信消息

Dead-letter message saklama kuralları

ApsaraMQ for RocketMQ Varsayılan olarak dead-letter mesajlar saklanmaz ve dead-letter durumuna girdikten sonra silinir.

Konsolda dead-letter message saklamayı etkinleştirebilirsiniz. Etkinleştirildiğinde dead-letter mesajlar dead-letter topic olarak bilinen belirli bir konuda depolanır. Ayrıntılar için bkz. Dead-letter message saklama kurallarını yapılandırma.

Dead-letter mesajlar yeni mesajlar olarak dead-letter topic içinde saklanır. Nitelikleri aşağıdaki gibi değişir:

  • Message ID: Dead-letter message dead-letter topic içinde saklandığında yeni bir message ID oluşturulur.

  • Kullanıcı tanımlı nitelikler, mesaj gövdesi ve diğer kullanıcı tarafından sağlanan bilgiler değişmeden kalır.

  • Dead-letter mesajların saklama süresi, dead-letter topic içine girdikleri andan itibaren sayılmaya başlar. Örneğin, bir mesaj sunucuya 13:00:00'da gönderilir ve iki saat sonra (15:00:00'da) tüketim ve yeniden deneme başarısız olursa saklama süresi 15:00:00'da başlar.

Sınırlamalar

  • Dead-letter topic normal mesaj konusu veya sıralı mesaj konusu olmalıdır. İşlemsel mesaj konuları ve zamanlanmış mesaj konuları dead-letter topic olarak kullanılamaz.

  • Orijinal mesajın konusunu dead-letter topic olarak kullanamazsınız (döngüsel yeniden denemeleri ve çığ etkisini önlemek için). Sistem aktarım sırasında dead-letter topic ile orijinal konunun eşleştiğini algılarsa mesaj silinir.

  • Farklı konulardan gelen dead-letter mesajlar aynı dead-letter topic içinde saklanabilir.

  • Bir consumer group silmek ilişkili dead-letter topic öğesini silmez.

  • Bir konu dead-letter policy tarafından referans alınıyorsa konuyu silmeden önce bu ilkeyi kaldırmanız gerekir.

Dead-letter message saklama kurallarını yapılandırma

Dead-letter mesajların saklanıp saklanmayacağını ApsaraMQ for RocketMQ konsolu üzerinden yapılandırabilirsiniz.

Bu ayara erişmek için:

  1. Instances sayfasında hedef örnek adını tıklayın.

  2. Sol gezinme bölmesinde Groups seçeneğini tıklayın. Groups sayfasında Create Group seçeneğini tıklayın.

Create Group iletişim kutusunda Advanced Settings bölümünü genişleterek Consumption Retry Policy (varsayılan: üstel geri çekilme), Maximum Retry Count (varsayılan: 16) ve Retain Dead-letter Messages geçiş anahtarını yapılandırın. Bu geçiş anahtarı kapalıysa yeniden deneme sınırını aşan mesajlar silinir.

Dead-letter mesajlar için gözlemlenebilirlik ölçümleri

Ölçüm açıklamaları

Ölçüm türü

Ölçüm

Metrics metadata

rocketmq_send_to_dlq_messages: Dakika başına dead-letter durumuna giren mesaj sayısı

Cloud Monitor metrics

  • Dakika başına dead-letter durumuna giren mesajlar (GroupId ve Topic bazında): SendDLQMessageCountPerGid

  • Dakika başına dead-letter durumuna giren mesajlar (GroupId bazında): SendDLQMessageCountPerGidTopic

Ölçümlerin kullanımı

ApsaraMQ for RocketMQ dead-letter mesajlar için uyarı yapılandırmayı destekler; bu sayede iş geribildiriminden önce anormallikleri tespit edebilir ve pano ölçümlerini inceleyerek kaynaklarını daha fazla belirleyebilirsiniz.

  • Senaryo 1: Dakika başına dead-letter durumuna giren mesaj sayısını görüntüleme

    Dashboard içinde Messages entering dead-letter status per minute göstergesini kontrol edin. Ayrıca Cloud Monitor kullanarak Messages entering dead-letter status per minute (GroupId & Topic) için bir uyarı ayarlayabilirsiniz.

  • Senaryo 2: Kaç dead-letter mesajın işlenmemiş olarak kaldığını kontrol etme

    Dead-letter mesajlar belirlenmiş bir konuda depolandıktan sonra bu dead-letter topic için Dashboard içindeki Consumption backlog ölçümünü görüntüleyin. Alternatif olarak Cloud Monitor kullanarak Message backlog (GroupId & Topic) için bir uyarı oluşturabilirsiniz.

En iyi uygulamalar

Tüketicilerin orijinal konu bilgilerini nasıl alabileceği

  • Seçenek 1: Her dead-letter topic öğesini orijinal konusuyla birebir eşleştirin.

    Örneğin, orijinal konu testTopic ise dead-letter konusunu DLQ-testTopic olarak adlandırın.

  • Seçenek 2: Orijinal konu adını özel bir mesaj niteliğine gömün. Örnek:

    messageBuilder.addProperty("originalTopic","testTopic")

Dead-letter işlemini ana iş mantığından ayırma

Dead-letter mesajlar normal iş akışlarında yeniden denemelerden sonra bile başarısız olan mesajlardır. Düzenli operasyonları aksatmamak için bunları ayrı olarak işleyin.

  • Dead-letter topic orijinal mesaj konusundan farklı olmalıdır. Orijinal konunun yeniden kullanılması dead-letter mesajların tüketim döngüsüne tekrar girmesine neden olabilir; bu da normal consumer group'ları engelleyerek çığ etkisini tetikler.

  • Ana üretim akışınızdaki consumer group'ları dead-letter mesajları tüketmek için kullanmayın. Bu durum normal mesaj işlemeyi engelleyebilir.

Başvurular

Consumption retry