- Notifications
You must be signed in to change notification settings - Fork1
BullMQ - Message Queue and Batch processing for NodeJS and Python based on Redis
License
dragonflydb/bullmq
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation

The fastest, most reliable, Redis-based distributed queue for Node.
Carefully written for rock solid stability and atomicity.
Follow@manast for *important* Bull/BullMQ/BullMQ-Pro news and updates!
You can find tutorials and news in this blog:https://blog.taskforce.sh/
Do you need to work with BullMQ on platforms other than Node.js? If so, check out theBullMQ Proxy
Supercharge your queues with a professional front end:
- Get a complete overview of all your queues.
- Inspect jobs, search, retry, or promote delayed jobs.
- Metrics and statistics.
- and many more features.
Sign up atTaskforce.sh
Dragonfly is a new Redis™ drop-in replacement that is fully compatible with BullMQ and brings some important advantages over Redis™ such as massive better performance by utilizing all CPU cores available and faster and more memory efficient data structures. Read morehere on how to use it with BullMQ. |
Some notable organizations using BullMQ:
![]() | ![]() |
Install:
$ yarn add bullmq
Add jobs to the queue:
import{Queue}from'bullmq';constqueue=newQueue('Paint');queue.add('cars',{color:'blue'});
Process the jobs in your workers:
import{Worker}from'bullmq';constworker=newWorker('Paint',asyncjob=>{if(job.name==='cars'){awaitpaintCar(job.data.color);}});
Listen to jobs for completion:
import{QueueEvents}from'bullmq';constqueueEvents=newQueueEvents('Paint');queueEvents.on('completed',({ jobId})=>{console.log('done painting');});queueEvents.on('failed',({ jobId, failedReason}:{jobId:string;failedReason:string})=>{console.error('error painting',failedReason);},);
This is just scratching the surface, check all the features and more in the officialdocumentation
Since there are a few job queue solutions, here is a table comparing them:
Feature | BullMQ-Pro | BullMQ | Bull | Kue | Bee | Agenda |
---|---|---|---|---|---|---|
Backend | redis | redis | redis | redis | redis | mongo |
Observables | ✓ | |||||
Group Rate Limit | ✓ | |||||
Group Support | ✓ | |||||
Batches Support | ✓ | |||||
Parent/Child Dependencies | ✓ | ✓ | ||||
Debouncing | ✓ | ✓ | ✓ | |||
Priorities | ✓ | ✓ | ✓ | ✓ | ✓ | |
Concurrency | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Delayed jobs | ✓ | ✓ | ✓ | ✓ | ✓ | |
Global events | ✓ | ✓ | ✓ | ✓ | ||
Rate Limiter | ✓ | ✓ | ✓ | |||
Pause/Resume | ✓ | ✓ | ✓ | ✓ | ||
Sandboxed worker | ✓ | ✓ | ✓ | |||
Repeatable jobs | ✓ | ✓ | ✓ | ✓ | ||
Atomic ops | ✓ | ✓ | ✓ | ✓ | ||
Persistence | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
UI | ✓ | ✓ | ✓ | ✓ | ✓ | |
Optimized for | Jobs / Messages | Jobs / Messages | Jobs / Messages | Jobs | Messages | Jobs |
Fork the repo, make some changes, submit a pull-request! Here is thecontributing doc that has more details.
Thanks for all the contributors that made this library possible,also a special mention to Leon van Kammen that kindly donatedhis npm bullmq repo.