A holding queue for messages that failed processing too many times, the safety net that prevents poison messages from blocking a pipeline.
A dead letter queue (DLQ) is a separate queue where a messaging system (SQS, Kafka, RabbitMQ, Pub/Sub) routes messages that have failed processing past a configured retry count. Without a DLQ, a single malformed message can block the queue indefinitely as the consumer retries it forever. With one, the bad message is moved aside, the consumer continues processing the rest, and a human or a separate workflow inspects the DLQ and decides whether to fix and replay or discard.
DLQs are the 'where do bad messages go to die' answer that every async system needs and many forget. The forgotten ones get blocked the first time a producer ships a schema change that the consumer can't parse. Pair every queue with a DLQ, an alert on DLQ depth > 0, and a runbook for replay.
See the part of the platform that handles dead letter queue (dlq) in production.