with one click
iii-dead-letter-queues
// Inspects and redrives jobs that exhausted all retries. Use when handling failed queue jobs, debugging processing errors, or implementing retry strategies.
// Inspects and redrives jobs that exhausted all retries. Use when handling failed queue jobs, debugging processing errors, or implementing retry strategies.
Browser SDK for connecting to the iii engine from web applications via WebSocket. Use when building browser-based clients that register functions, invoke triggers, or consume streams from the frontend.
Binary streaming between workers via channels. Use when building data pipelines, file transfers, streaming responses, or any pattern requiring binary data transfer between functions.
Registers cron triggers with 7-field expressions to run functions on recurring schedules. Use when scheduling periodic jobs, timed automation, crontab replacements, cleanup routines, report generation, batch processing, or calendar-based work that is genuinely time-driven.
Builds custom trigger types for events iii does not handle natively. Use when integrating webhooks, file watchers, IoT devices, database CDC, or any external event source.
Configures the iii engine via iii-config.yaml — workers, adapters, queue configs, ports, and environment variables. Use when deploying, tuning, or customizing the engine.
Handle iii engine and SDK errors across Node, Python, Rust, and browser workers. Use when interpreting error codes, retryability, RBAC denial, timeouts, handler failures, or SDK-specific exception surfaces.
| name | iii-dead-letter-queues |
| description | Inspects and redrives jobs that exhausted all retries. Use when handling failed queue jobs, debugging processing errors, or implementing retry strategies. |
Comparable 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.