bullmq

v5.73.0 MIT

Queue for messages and jobs based on Redis

Weekly Downloads
3.2M
Stars
8.7K
Forks
588
Open Issues
356
Gzip Size
175.6 kB
Unpacked Size
2.4 MB
Dependencies
19
Last Updated
1mo ago

bullmq Download Trends

Download trends for bullmq04.1M8.2M12.2M16.3MFeb 2025MayAugNovFebApr 2026
bullmq

About bullmq

BullMQ is a robust Node.js job queue system built on Redis, designed to handle background job processing reliably and efficiently. It addresses the common challenge of offloading computationally intensive or time-consuming tasks from the main application thread, preventing request timeouts and improving user experience.

Its core philosophy centers around developer experience and high performance, making it suitable for applications requiring scalable task management. BullMQ is built with TypeScript and targets developers who need a powerful, Redis-backed queueing solution for Node.js environments.

The system utilizes a powerful API for defining jobs, scheduling them, and managing their lifecycle. Key features include repeatable jobs, delayed jobs, and sophisticated error handling with automatic retries. The use of Redis streams for message durability and performance is a core architectural choice, ensuring jobs are not lost even in case of system failures.

BullMQ integrates seamlessly into existing Node.js applications and is framework-agnostic, allowing it to be used with Express, NestJS, or any other Node.js server. Its design also facilitates easy deployment within microservices architectures and alongside various data stores.

With 4.0M weekly downloads and 8.7K GitHub stars, BullMQ demonstrates significant community adoption and maturity. The unpacked size of 2.4 MB and a gzipped bundle size of 175.6 kB indicate a reasonably sized dependency that does not overly burden application footprints.

A potential consideration is the inherent dependency on Redis; while powerful, this requires setting up and managing a Redis instance. Developers should also be mindful of the 349 open issues, which, while typical for a project of this scale, may require careful evaluation for critical dependencies.

When to use

  • When processing long-running tasks like image resizing or video encoding in the background.
  • When needing to schedule jobs to run at specific times or at regular intervals using `RepeatableJobs`.
  • When requiring guaranteed job delivery and execution, leveraging Redis streams for persistence.
  • When implementing a robust notification system that dispatches emails or other messages asynchronously.
  • When building a distributed system where multiple Node.js workers can consume jobs from a central Redis queue.
  • When implementing rate limiting for API requests or external service calls by queuing them for sequential processing.

When NOT to use

  • If your needs involve only simple in-memory task scheduling without persistence or distributed processing, a simpler timer utility might suffice.
  • If your application does not already have Redis infrastructure and the operational overhead of managing Redis is undesirable for your setup.
  • If you require a queueing solution with built-in features for complex graph processing or data transformation, rather than straightforward job execution.
  • If you are seeking a message broker with features like pub/sub messaging for real-time event streams, as BullMQ focuses on job-based queuing.
  • If the 349 open issues are a concern for your team and you require a solution with a significantly lower number of open maintenance tickets.

bullmq Alternatives

bullmq Categories