BullMQ
Open-source message queue for background jobs with Redis support
AI Summary
BullMQ is a high-performance open-source message queue library for background jobs, built on Redis and capable of processing over 250,000 jobs per second. It supports multiple programming languages (Node.js, Python, Elixir, PHP) and offers features like delayed jobs, automatic retries, rate limiting, and complex job dependencies. The MIT-licensed solution is used by thousands of companies worldwide for video transcoding, AI pipelines, and payment processing.
✓ Pros
- + Multi-language support for Node.js, Python, Elixir and PHP with unified API
- + Extremely high performance with over 250,000 jobs/second and horizontal scaling
- + Comprehensive features like job flows, rate limiting, auto-retry and delayed jobs out-of-the-box
✗ Cons
- − Requires Redis, Valkey or DragonflyDB as additional infrastructure component
- − Complexity may be over-engineered for simple use cases
Use Cases
- → Asynchronous processing of email delivery and notifications with delayed jobs
- → Video transcoding and image processing with parallel workers
- → Recurring tasks like daily reports and database maintenance via cron jobs
- → Payment processing and API integration with automatic error handling and rate limiting
Who is it for?
For backend developers and DevOps teams who need scalable background job processing in microservices and polyglot environments.
Tags
What is BullMQ?
BullMQ is an open-source library for managing background jobs and message queues. It is built on Redis (and compatible systems such as Valkey and DragonflyDB) and processes, by its own account, more than 250,000 jobs per second. Originally started as a Node.js solution, BullMQ now supports Python, Elixir and PHP through a unified API. The library is MIT-licensed and is used by companies worldwide for workloads such as video transcoding, AI pipelines and payment processing.
Core features
- Delayed jobs and cron scheduling: Jobs can be executed on a schedule, for example for nightly reports or regular database maintenance.
- Automatic retries and error handling: When a job fails, BullMQ restarts it according to configurable rules, without manual intervention.
- Rate limiting: Processing speed can be capped, which is particularly relevant for API integrations with external rate limits.
- Job flows and dependencies: Jobs can be linked in complex dependency graphs, so that one job only starts once another has completed.
- Horizontal scaling: Multiple worker processes distribute the load without requiring additional coordination logic.
Who is BullMQ for?
BullMQ is aimed at backend developers and DevOps teams building asynchronous processing in microservices or polyglot environments. Anyone who wants to offload email sending, image processing or payment flows from the request-response cycle will find a mature approach here. For small projects with a single service, however, the overhead is considerable. BullMQ requires a running Redis instance, which must be administered and monitored. Teams without existing Redis infrastructure take on that additional burden.
Context & alternatives
BullMQ belongs to the category of task-based message queues, which differ from full message brokers such as RabbitMQ or Apache Kafka in that they are specifically optimised for job processing and do not focus on general pub/sub operation. Teams already running Redis pay little extra for the integration. In the Node.js ecosystem, Bull (the predecessor) was the long-standing standard. BullMQ replaces it with a TypeScript-first approach and multi-language support. Anyone who wants to avoid Redis or prefers a database-backed solution should look at alternatives such as Pgboss (PostgreSQL). For purely serverless environments, cloud-native services such as AWS SQS or Google Cloud Tasks are architecturally closer.