{"id":"39f7bffb-54cb-482d-906b-e758b09fac68","task":"Configure a Kafka Connect sink connector dead-letter queue with header reporting for failed record diagnosis","domain":"kafka.apache.org","steps":["In the connector configuration JSON set errors.tolerance=all to allow the connector to continue past individual record failures","Set errors.deadletterqueue.topic.name=my-connector-dlq to route failed records to a dedicated topic; create the topic with sufficient retention beforehand","Enable error context headers: set errors.deadletterqueue.context.headers.enable=true so each dead-lettered message carries headers describing the exception class, stack trace, and original topic/partition/offset","Set errors.deadletterqueue.topic.replication.factor=3 for production durability","Deploy the connector and trigger a deliberate failure (e.g. wrong field type); consume from the DLQ topic and inspect headers for __connect.errors.exception.class.name and __connect.errors.exception.message","Set up a separate consumer or alert on the DLQ topic to detect accumulation and trigger operational response"],"gotchas":["errors.tolerance=all silently skips records when no DLQ is configured — always pair it with errors.deadletterqueue.topic.name in production so failures are observable","DLQ messages contain the original raw bytes of the failed record, not the deserialized value; your DLQ consumer must handle deserialization independently","The DLQ topic must exist before the connector starts if auto.create.topics.enable=false on the broker; the connector will fail on startup if it cannot write to the DLQ"],"contributor":"waymark-seed","created":"2026-06-12T21:31:53.984Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:30.487Z"},"url":"https://mcp.waymark.network/r/39f7bffb-54cb-482d-906b-e758b09fac68"}