全部产品
Search
文档中心

ApsaraMQ for RocketMQ:Pesan dead-letter

更新时间:Mar 12, 2026

Ketika sebuah pesan gagal dikonsumsi setelah mencapai jumlah maksimum percobaan ulang, pesan tersebut menjadi pesan dead-letter. Ini adalah satu-satunya kondisi yang menghasilkan pesan dead-letter. Secara default, ApsaraMQ for RocketMQ membuang pesan dead-letter. Untuk menyimpannya guna pemulihan atau troubleshooting, aktifkan fitur penyimpanan pesan dead-letter agar pesan tersebut diarahkan ke topik dead-letter khusus.

Cara kerja

Pesan dead-letter merupakan status akhir dalam siklus hidup percobaan ulang konsumsi:

  1. Konsumen menerima sebuah pesan dan gagal memprosesnya.

  2. Broker mencoba mengirimkan ulang hingga mencapai jumlah maksimum percobaan ulang yang telah dikonfigurasi.

  3. Jika pesan tersebut tetap gagal setelah semua percobaan ulang, pesan tersebut menjadi pesan dead-letter.

Untuk menyimpan pesan dead-letter alih-alih membuangnya, aktifkan fitur penyimpanan pesan dead-letter di Konsol. Pesan dead-letter kemudian akan disimpan ke topik dead-letter yang telah ditentukan.

Dead-letter message flow

Apa yang terjadi ketika sebuah pesan disimpan ke topik dead-letter

  • ID pesan baru dihasilkan.

  • Atribut kustom dan isi pesan tetap tidak berubah.

  • Periode retensi dimulai sejak pesan disimpan ke topik dead-letter, bukan sejak waktu pengiriman awal. Misalnya, jika sebuah pesan dikirim ke broker pada pukul 13.00.00 dan menjadi pesan dead-letter pada pukul 15.00.00, periode retensinya dimulai pada pukul 15.00.00.

Aktifkan penyimpanan pesan dead-letter

Untuk mengaktifkan penyimpanan pesan dead-letter di Konsol ApsaraMQ for RocketMQ:

  1. Pada halaman Instances, klik nama instans.

  2. Di panel navigasi sebelah kiri, klik Groups. Pada halaman Groups, klik Create Group.

Console configuration

Proses pesan dead-letter

Berlangganan kelompok konsumen khusus ke topik dead-letter untuk mengonsumsi dan melakukan troubleshooting pesan yang gagal secara terpisah dari traffic bisnis normal.

Lacak topik asal

Untuk mengidentifikasi topik asal sebuah pesan dead-letter, gunakan salah satu pendekatan berikut:

  • Konvensi penamaan: Petakan nama topik dead-letter ke nama topik asal. Misalnya, jika topik asal adalah testTopic, beri nama topik dead-letter sebagai DLQ-testTopic.

  • Atribut kustom: Sertakan topik asal dalam properti pesan:

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

Hindari avalanche pesan

Penanganan pesan dead-letter yang tidak tepat dapat menyebabkan kegagalan berantai:

  • Jangan pernah menggunakan topik asal sebagai topik dead-letter. Hal ini menciptakan loop percobaan ulang di mana pesan dead-letter terus-menerus berputar antara topik asal dan proses konsumsi yang gagal tanpa henti. Jika sistem mendeteksi bahwa topik dead-letter sama dengan topik asal, pesan tersebut akan dibuang.

  • Jangan mengonsumsi pesan dead-letter dengan kelompok konsumen yang memproses pesan normal. Gunakan kelompok konsumen terpisah yang didedikasikan khusus untuk topik dead-letter.

Pantau pesan dead-letter

Konfigurasikan aturan alert untuk mendeteksi kegagalan konsumsi lebih awal dan merespons sebelum pesan dead-letter menumpuk.

Metrik yang tersedia

Sumber

Metrik

Deskripsi

Dasbor

rocketmq_send_to_dlq_messages

Pesan dead-letter baru per menit

CloudMonitor

SendDLQMessageCountPerGid

Pesan dead-letter baru per menit dalam suatu topik dari kelompok konsumen

CloudMonitor

SendDLQMessageCountPerGidTopic

Pesan dead-letter baru per menit dalam kelompok konsumen

Dasbor

Consumer lag

Pesan dead-letter yang belum dikonsumsi dalam topik dead-letter

CloudMonitor

ConsumerLagPerGidTopic

Consumer lag per kelompok konsumen per topik

Pendekatan pemantauan yang direkomendasikan

  • Deteksi kegagalan baru: Pantau metrik rocketmq_send_to_dlq_messages di dasbor, atau tambahkan metrik SendDLQMessageCountPerGid sebagai alert CloudMonitor.

  • Lacak backlog yang belum diproses: Periksa metrik Consumer lag di dasbor untuk topik dead-letter, atau tambahkan metrik ConsumerLagPerGidTopic sebagai alert CloudMonitor.

Batasan

  • Topik dead-letter harus menggunakan tipe normal message atau tipe ordered message.

  • Topik asal sebuah pesan tidak dapat digunakan sebagai topik dead-letter. Jika sistem mendeteksi kecocokan, pesan tersebut akan dibuang.

  • Pesan dead-letter dari topik yang berbeda dapat disimpan ke topik dead-letter yang sama.

  • Menghapus kelompok konsumen tidak menghapus topik dead-letter yang terkait dengannya.

  • Untuk menghapus topik yang terkait dengan kebijakan dead-letter, putuskan asosiasi topik tersebut dari kebijakan terlebih dahulu.

Langkah selanjutnya