Skip to main content

Dead Letter Queue

What a dead letter queue means, why not every message should be retried forever, and how to isolate failure without losing traceability.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

What it is

A dead letter queue, or DLQ, is where messages go after they could not be processed safely.

Instead of retrying forever, the system removes that message from the main path.

When it matters

This matters when you have bad messages, corrupted payloads, or repeated failures that retry will not fix.

Without a DLQ, the same message can:

  • block consumers
  • create infinite retry loops
  • hide the real problem in the noise

Common mistake

The classic mistake is treating the DLQ as an automatic graveyard.

If messages go there and nobody looks, you only changed where the failure sits.

Short example

A worker receives an event with an invalid payload.

After a few attempts, it stops retrying and sends the message to the DLQ.

The main flow keeps moving and the team can inspect the case with context.

Why it helps

A DLQ protects the main path without erasing the evidence of failure.

It does not solve the problem by itself.

It creates a safe place to handle what no longer belongs in the normal flow.

Infinite retry hides defects. A DLQ separates what needs a different response.

You finished this article

Keep exploring

Related articles