Skip to content
Kafka Is Fun

Lesson 6 of 6

Dead Letter Queues & Triage

A dead letter queue (DLQ) is where messages go when a consumer or connector has given up trying to process them — a malformed payload, a schema mismatch, a downstream call that will never succeed. Routing them to a DLQ instead of blocking the partition or retrying forever keeps the rest of the stream flowing. The trap most teams fall into: a DLQ is only as useful as the alerting and triage process behind it. Left alone, a DLQ becomes a graveyard nobody visits — enabled reactively after an incident, unmonitored, generating alerts that get ignored, with no agreed way to replay messages once the bug is fixed. And because failures usually arrive in batches, a DLQ flood is almost never thousands of unrelated problems — it's typically one or two root causes (a bad schema deploy, a rotated credential) amplified across every record in the batches they touched.

Key configuration

broker / client configurationproperties
# A defensible minimum-viable DLQ config (Kafka Connect):
errors.tolerance=all
errors.deadletterqueue.topic.name=dlq.<connector-name>
errors.deadletterqueue.context.headers.enable=true
errors.log.enable=true
errors.log.include.messages=true

Try it in the simulator

Guided scenarios for this module — the simulator opens with the exercise already running.