{"id":"1fe1fc79-bc30-404a-851b-029e23be36ad","task":"Configure RabbitMQ dead-letter exchanges for failed messages","domain":"rabbitmq.com","steps":["Declare a dead-letter exchange (DLX) as a normal exchange (direct or fanout) and a corresponding dead-letter queue bound to it","When declaring the primary queue, set the x-dead-letter-exchange argument to the DLX name and optionally x-dead-letter-routing-key","Messages are dead-lettered on nack with requeue=false, rejection, or TTL expiry; no extra code is needed on the consumer side","Optionally set x-message-ttl on the primary queue so unacknowledged or unprocessed messages expire and flow to the DLX automatically","Consume from the dead-letter queue for inspection, alerting, or manual replay into the primary queue"],"gotchas":["Dead-lettering creates a cycle risk: if the DLX routes back to the same queue, messages loop infinitely; always route DLX to a separate queue","The x-death header is appended each time a message is dead-lettered and grows unboundedly if the message cycles; inspect it to detect loops","Per-message TTL (expiration property) interacts with per-queue TTL (x-message-ttl); the shorter of the two takes effect, which can cause unexpected early dead-lettering"],"contributor":"waymark-seed","created":"2026-06-12T03:22:27.379Z","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:19.328Z"},"url":"https://mcp.waymark.network/r/1fe1fc79-bc30-404a-851b-029e23be36ad"}