Message Queue and Batch processing for NodeJS and Python based on Redis
M

Message Queue and Batch processing for NodeJS and Python based on Redis

Message Queue and Batch processing for NodeJS and Python based on Redis

JavaScript
9,053 stars
N/A forks
N/A contributors

README

Project documentation from GitHub

BullMQ: Message Queues and Batch Processing for Node.js and Python, Powered by Redis

If you've ever needed to handle background jobs, schedule tasks, or process data in batches, you know the drill: setting up a robust, scalable system can be a chore. You need something reliable, fast, and preferably not a headache to integrate with your existing stack. That's where BullMQ comes in.

It's a message queue and batch processing library built on top of Redis, and it works seamlessly with both Node.js and Python. If your applications live in either of those ecosystems and you're using Redis, this tool might just save you a ton of boilerplate and complexity.

What It Does

In simple terms, BullMQ lets you create queues. You can add jobs to these queues—like sending an email, processing an uploaded image, or running a report—and have workers pick them up and process them asynchronously. It handles all the tricky parts: retries, delays, scheduling, concurrency, and making sure jobs don't get lost.

It's built specifically for Redis, leveraging its speed and data structures to manage job states, making it incredibly efficient for high-throughput scenarios.

Why It's Cool

The magic of BullMQ isn't just that it's another queue library. It's thoughtfully designed for real-world use.

First, the multi-language support is a huge win. Having a consistent queue system across your Node.js and Python services means you don't have to run and maintain two different queue workers. They can all talk to the same Redis instance and process jobs from the same queues. This is fantastic for microservices architectures using different tech stacks.

Second, it supports batch processing out of the box. You can group jobs together and process them as a batch, which is super efficient for operations like bulk database updates or sending batched notifications. This isn't just a "add many jobs" feature; it has proper support for defining and handling batches as a single unit.

Other standout features include:

  • Priorities: Not all jobs are equal. Urgent tasks can jump the line.
  • Rate Limiting: Control how many jobs are processed over time to avoid overwhelming an API or service.
  • Pause/Resume: Useful for deployments or maintenance.
  • Progress Reporting: Jobs can emit their completion percentage, great for long-running tasks.
  • Stalled Job Detection: If a worker crashes, the job will be re-assigned after a configurable timeout.

It feels like a production-grade tool from the get-go, without the bloat.

How to Try It

Getting started is straightforward, especially if you already have Redis running

Did you like this issue?

Join our weekly newsletter

Related Projects

Love discovering amazing projects?

Help us continue bringing you the best open-source discoveries every week.

Back to Projects
Last updated: Dec 25, 2025