What problem does it solve? Setting up background job processing with BullMQ involves non-obvious production pitfalls: shared Redis connections cause deadlocks, default concurrency of 1 bottlenecks throughput, unbounded completed-job retention exhausts Redis memory, and failed jobs vanish without a dead letter queue. This Skill provides a complete, correct-by-default architecture for BullMQ-based background job systems. ## Core Features & Use Cases - Queue Architecture: Enforces one queue per job type with separate ioredis connections for Queue, Worker, and QueueEvents roles, plus a concurrency sizing formula based on rate limits and job duration. - Failure Handling: Implements exponential backoff retries, dead letter queues with replay support, and graceful worker shutdown that drains active jobs before closing. - Advanced Patterns: Covers dependent job flows with FlowProducer, cron-based recurring jobs with stable jobIds, rate limiting for external API quotas, and Bull Board monitoring UI behind authentication. - Use Case: You need to send transactional emails, generate PDFs, and call LLM APIs in the background without blocking your Fastify API. This Skill produces isolated queues per job type, correctly sized workers, a DLQ for failed jobs, and a Bull Board dashboard at /admin/queues. ## Quick Start Ask the AI to set up a BullMQ background job queue for your task, for example: "Set up BullMQ for sending transactional emails with retry logic and a dead letter queue."