Question: How can I use BullMQ for job queue management in Node.js?


"BullMQ" is an advanced Redis-based queue for handling jobs in Node.js. It provides robustness and a rich set of features which allow you to handle jobs efficiently. Here's a basic example of how to create a queue, add jobs to it, and process those jobs using Bull MQ:

First, install BullMQ via npm:

npm install bullmq

Then, create a new file queue.js and write the following code:

const { Queue } = require('bullmq'); // Create a queue const myQueue = new Queue('myQueue'); // Add a job to the queue async function addJobToQueue() { await myQueue.add('myJob', { foo: 'bar' }); } addJobToQueue();

In this example, we created a queue called 'myQueue' and added a job 'myJob' with some data ('foo: bar').

Then, in another file worker.js, you can process jobs from this queue like this:

const { Worker } = require('bullmq'); const myWorker = new Worker('myQueue', async job => { // This is where you would handle your job processing console.log(; // Outputs: { foo: 'bar' } });

In this worker file, we're creating a worker that listens for jobs on 'myQueue'. When a job appears, the worker logs the job's data.

Remember, both the queue and worker must connect to the same Redis instance. If your Redis server isn't running on the default local configuration (localhost:6379), you'll need to provide connection details.

For more advanced usage, including priority queues, scheduling, delayed jobs, and more, refer to the BullMQ documentation.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book
Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.