BullMQ is an open-source message queue and background job library made by Taskforce.sh. A job queue stores units of work, called jobs, so that worker processes can run them later, outside the web request that created them. BullMQ keeps its queues in Redis, an in-memory database, or in compatible servers such as Valkey, DragonflyDB, AWS ElastiCache and Upstash; the site also names PostgreSQL as a backend.
Code adds a job to a named queue, and a Worker in the same or another service takes jobs and runs them with a set concurrency. Delayed jobs run at a given time or after a delay, and job schedulers create recurring jobs from cron expressions or fixed intervals. Failed jobs retry automatically with exponential backoff. Flows link parent and child jobs, and rate limits and deduplication protect external APIs. Libraries for Node.js, Bun, Python, .NET, Rust, Elixir and PHP share the same queues.
BullMQ is free under the MIT license, with no limit on workers or concurrency. BullMQ Pro, a paid drop-in replacement, adds groups, batches, observables and professional support under a per-deployment license.