BullMQ

BullMQ

Open Source

Background jobs that scale.

APIs & Infrastructure
Message Queues & Background Jobs

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
Open SourceFree
  • · MIT-licensed BullMQ library
  • · Queues, workers, schedulers, flows, and rate limiting
  • · Community support on GitHub and Discord
Taskforce.sh Starter$19.95/monthly
  • · Hosted dashboard for monitoring BullMQ queues
  • · One Redis connection, unlimited queues and users
  • · Alerts, metrics, and job management
BullMQ Pro Standard$139/monthly
  • · 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
BullMQ Pro EnterpriseContact sales
  • · Multiple deployments with volume discounts
  • · Priority support
  • · Contact sales for pricing

Tech Stacks with BullMQ

MERN Stack

Project

MongoDB, 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

Auth:
Deploy on:
Object Storage add-on:
Caching add-on:
Background Jobs add-on:
CI/CD add-on:
Containerization add-on:
Observability add-on:
Email add-on:
Payments add-on:
Styling add-on:
Analytics add-on:

Express + MongoDB

Project

Node.js REST API with Express and MongoDB, the classic document-store backend stack.

Programming

Databases

Hosting

Authentication

Auth:
Deploy on:
Object Storage add-on:
Caching add-on:
Background Jobs add-on:
CI/CD add-on:
Containerization add-on:
Observability add-on:
Email add-on:
Payments add-on:

Angular + NestJS

Project

Enterprise-grade TypeScript full-stack: Angular on the frontend, NestJS on the backend.

Database:
ORM:
Deploy on:
Authentication add-on:
Object Storage add-on:
Caching add-on:
Background Jobs add-on:
CI/CD add-on:
Containerization add-on:
Observability add-on:
Email add-on:
Payments add-on:
Styling add-on:
Analytics add-on:

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.

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

T

Taskforce.sh

Website →

Tags

JavaScriptTypeScriptOpen SourceSelf-hostableWeb DevelopmentWeb

Details

Maintained
Yes