
BullMQ
Open SourceBackground jobs that scale.
Published 12 October 2026
Scores
Popularity3/5
Millions of weekly npm downloads and the usual recommendation for Node.js job queues, but the name is mostly known to Node.js backend developers.
Learning Curve2/5
A queue, a worker, and a Redis connection are enough to start, and the TypeScript API and documentation are compact; flows and Redis tuning come later.
Flexibility4/5
Delays, schedules, priorities, flows, rate limits, and a choice of Redis or PostgreSQL storage cover most job patterns, while job groups sit behind the Pro licence.
Performance4/5
Atomic Lua scripts inside Redis keep queue operations fast, and throughput scales by adding workers or concurrency per worker.
Portability4/5
MIT-licensed, self-hosted, and runs on any Node.js host with Redis or PostgreSQL, though it relies on a long-lived process and has no serverless mode.
About BullMQ
BullMQ is an open-source job queue library for Node.js and TypeScript. Your app adds jobs to a named queue, and a worker process, in the same codebase or a separate service, picks them up and runs them. It is the Node.js counterpart of Celery: the usual home for sending email, processing uploads, syncing with third-party APIs, and any work that should not hold up a request.
Jobs live in Redis by default, so a Redis server is part of the setup, and BullMQ's maintainers also verify Dragonfly as a compatible engine. Since version 6, an optional PostgreSQL backend runs the same queue, worker, and flow API on Postgres, for teams that would rather not operate Redis or want jobs stored next to their relational data. Redis remains the default and the most tested option.
Beyond plain queues, BullMQ supports delayed jobs, job schedulers with cron expressions, priorities, retries with exponential backoff, rate limiting, deduplication, and flows, where a parent job waits for a tree of child jobs to finish. Workers can run processors in sandboxed child processes or worker threads, so a crash or CPU-heavy job does not take down the main process. Official packages also exist for Python, Elixir, PHP, Rust, and .NET, so a job added from one language can be processed in another.
The library is MIT-licensed and maintained by Taskforce.sh, which sells BullMQ Pro (job groups with per-group concurrency and rate limits, batches, and support) and the Taskforce.sh dashboard for monitoring queues. NestJS ships an official @nestjs/bullmq module, and it runs on any Node.js host with a long-running process.
Key Features
- Queues and workers for Node.js and TypeScript, backed by Redis
- Optional PostgreSQL backend with the same API
- Delayed jobs and job schedulers with cron expressions
- Retries with exponential backoff, priorities, and rate limiting
- Flows: parent jobs that wait for trees of child jobs
- Sandboxed processors in child processes or worker threads
- Job deduplication and queue events for progress tracking
- Official packages for Python, Elixir, PHP, Rust, and .NET
Pros
- The default job queue for Node.js backends, with heavy weekly npm downloads
- Written in TypeScript with typed jobs and a small, readable API
- Official NestJS module makes setup a few lines in NestJS apps
- Fast, because job state changes run as atomic Lua scripts inside Redis
- MIT-licensed core covers most needs without the paid Pro edition
Cons
- Needs a Redis server, or Postgres with the newer backend, plus a long-running worker process
- Does not fit serverless hosts where nothing runs between requests
- Valkey and other Redis alternatives are not officially verified
- Job groups and batch processing are only in the paid Pro edition
- Redis must be configured with persistence and a noeviction policy or jobs can be lost
BullMQ Pricing
Open Source- · MIT-licensed BullMQ library
- · Queues, workers, schedulers, flows, and rate limiting
- · Community support on GitHub and Discord
- · Hosted dashboard for monitoring BullMQ queues
- · One Redis connection, unlimited queues and users
- · Alerts, metrics, and job management
- · Licence per deployment for companies under 100 employees
- · Job groups with per-group concurrency and rate limits
- · Batch processing and observables for cancellation
- · Support from the BullMQ maintainers
- · Multiple deployments with volume discounts
- · Priority support
- · Contact sales for pricing
Tech Stacks with BullMQ
MERN Stack
ProjectMongoDB, Express, React, Node.js: the classic JavaScript full-stack. A well-trodden path with massive community support and job-market demand.
Frontend
Programming
Databases
Hosting
Authentication
Express + MongoDB
ProjectNode.js REST API with Express and MongoDB, the classic document-store backend stack.
Angular + NestJS
ProjectEnterprise-grade TypeScript full-stack: Angular on the frontend, NestJS on the backend.
Tools Related to BullMQ
Integrates with BullMQ(2)
NestJS's official @nestjs/bullmq package registers BullMQ queues as injectable providers and turns classes into workers with a @Processor decorator.
BullMQ stores its queues and job state in Redis by default, running state changes as atomic Lua scripts; Redis needs persistence and a noeviction policy so jobs are not lost.
Built on (1)
BullMQ is a job queue library for JavaScript and TypeScript applications running on Node.js.
Alternatives to BullMQ(1)
BullMQ is the Node.js and TypeScript job queue built on Redis; Celery is the Python task queue and works with Redis or RabbitMQ. The choice follows the backend's language.
Vendor
Taskforce.sh
Website →Tags
Details
- Maintained
- Yes