Enqueues jobs, configures retry policies, sets concurrency limits, and orders messages via named standard or FIFO queues. Use when building background job workers, task queues, message queues, async pipelines, or any pattern needing guaranteed delivery with exponential backoff and dead-letter handling.
83
78%
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-queue-processing/SKILL.mdComparable to: BullMQ, Celery, SQS
Use the concepts below when they fit the task. Not every queue setup needs all of them.
iii-config.yaml under queue_configsTriggerAction.Enqueue({ queue }) dispatches a job to a named queuemax_retriesmessageReceiptIdProducer function
→ TriggerAction.Enqueue({ queue: 'task-queue' })
→ Named Queue (standard or FIFO)
→ Consumer registerFunction handler
→ success / retry with backoff
→ Dead Letter Queue (after max_retries)| Primitive | Purpose |
|---|---|
registerFunction | Define the consumer that processes jobs |
trigger({ ..., action: TriggerAction.Enqueue({ queue }) }) | Dispatch a job to a named queue |
messageReceiptId | Acknowledge or track individual job processing |
queue_configs in iii-config.yaml | Declare queues with concurrency and retries |
See ../references/queue-processing.js for the full working example — a producer that enqueues jobs and a consumer that processes them with retry logic.
Also available in Python: ../references/queue-processing.py
Also available in Rust: ../references/queue-processing.rs
Code using this pattern commonly includes, when relevant:
registerWorker(url, { workerName }) — worker initializationregisterFunction(id, handler) — define the consumertrigger({ function_id, payload, action: TriggerAction.Enqueue({ queue }) }) — enqueue a jobpayload.messageReceiptId — track or acknowledge the jobtrigger({ function_id: 'state::set', payload }) — persist results after processingconst logger = new Logger() — structured logging per jobUse the adaptations below when they apply to the task.
max_retries and concurrency in queue config to match your workloadNamed queues are declared in iii-config.yaml under queue_configs with per-queue max_retries, concurrency, type, and backoff_ms. Fan-out is a pattern (one producer triggers multiple consumer functions), not a queue config key. See ../references/iii-config.yaml for the full annotated config reference.
iii-trigger-actions with TriggerAction.Void().iii-dead-letter-queues for the DLQ consumer.iii-workflow-orchestration.iii-queue-processing when the primary need is reliable async job execution with retries.iii-queue-processing 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.