Nâng CaoKafka iconKafka

Dead Letter Queue (DLQ) trong Kafka là gì? Cách implement xử lý message lỗi?

Kafka không có DLQ built-in như RabbitMQ, nhưng pattern DLQ được implement bằng cách: khi consumer fail xử lý một message sau N lần retry, thay vì block toàn bộ partition, message được forward sang một topic DLQ riêng (ví dụ: orders.DLT) kèm theo metadata (exception, timestamp, original topic, partition, offset).

  • Kafka có Spring Kafka @RetryableTopic@DltHandler để implement pattern này tự động với exponential backoff.
  • Cần cân nhắc: nếu dừng xử lý để retry, các message sau sẽ bị delay (ordering preserved nhưng throughput giảm); nếu skip và gửi DLQ, ordering bị phá vỡ nhưng throughput không bị ảnh hưởng.
  • Monitoring DLQ là critical — nên alert khi DLQ có message, có team xử lý manual hoặc replay sau khi fix bug.
  • Một best practice khác là dùng retry topic với tên topic.RETRY-1, topic.RETRY-2 với delay tăng dần.

Xem toàn bộ Kafka cùng filter theo level & chủ đề con.

Mở danh sách Kafka