Inspects and redrives jobs that exhausted all retries. Use when handling failed queue jobs, debugging processing errors, or implementing retry strategies.
73
66%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/iii-dead-letter-queues/SKILL.mdComparable to: SQS DLQ, RabbitMQ dead-letter exchanges
Use the concepts below when they fit the task. Not every queue failure needs manual DLQ intervention.
max_retries with exponential backoff (backoff_ms * 2^attempt)iii::queue::redrive function or the iii trigger CLI commandA queue consumer fails processing a job. The engine retries with exponential backoff up to max_retries. Once exhausted, the message moves to the DLQ. An operator inspects the failure, deploys a fix, then redrives the DLQ to replay all failed jobs.
| Primitive | Purpose |
|---|---|
trigger({ function_id: 'iii::queue::redrive', payload: { queue } }) | Redrive all DLQ jobs for a named queue |
trigger({ function_id: 'iii::queue::status', payload: { queue } }) | Check queue and DLQ status |
iii trigger --function-id='iii::queue::redrive' --payload='{"queue":"name"}' | CLI redrive command (part of the engine binary) |
--timeout-ms | CLI flag to set trigger timeout (default 30s) |
queue_configs in iii-config.yaml | Configure max_retries and backoff_ms |
See ../references/dead-letter-queues.js for the full working example — inspecting DLQ status,
Also available in Python: ../references/dead-letter-queues.py
Also available in Rust: ../references/dead-letter-queues.rs redriving failed jobs via SDK and CLI, and configuring retry behavior.
Code using this pattern commonly includes, when relevant:
await iii.trigger({ function_id: 'iii::queue::redrive', payload: { queue: 'payment' } }) — redrive via SDKiii trigger --function-id='iii::queue::redrive' --payload='{"queue": "payment"}' — redrive via CLIiii trigger --function-id='iii::queue::redrive' --payload='{"queue": "payment"}' --timeout-ms=60000 — with custom timeout{ queue: 'payment', redriven: 12 } indicating count of replayed jobshttp://localhost:15672, find iii.__fn_queue::{name}::dlq.queueUse the adaptations below when they apply to the task.
max_retries and backoff_ms in queue_configs based on your failure toleranceiii::queue::redrive for operational controliii::queue::status to check DLQ depth before and after redrivingQueue max_retries and backoff_ms are set per queue in iii-config.yaml under queue_configs. See ../references/iii-config.yaml for the full annotated config reference.
iii-queue-processing.iii-engine-config.iii-functions-and-triggers.iii-dead-letter-queues when the primary problem is inspecting or redriving failed jobs.iii-dead-letter-queues in the iii engine.8921efa
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.