bullmq - v5.52.2
    Preparing search index...

    bullmq - v5.52.2




    The fastest, most reliable, Redis-based distributed queue for Node.
    Carefully written for rock solid stability and atomicity.

    Read the documentation

    Follow @manast for *important* Bull/BullMQ/BullMQ-Pro news and updates!

    πŸ›  Tutorials

    You can find tutorials and news in this blog: https://blog.taskforce.sh/

    News πŸš€

    Do you need to work with BullMQ on platforms other than Node.js? If so, check out the BullMQ Proxy

    Official FrontEnd

    Taskforce.sh, Inc

    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 at Taskforce.sh

    πŸš€ Sponsors πŸš€

    Dragonfly 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 more here on how to use it with BullMQ.

    Used by

    Some notable organizations using BullMQ:

    Microsoft Vendure Datawrapper Nest
    Curri Novu NoCodeDB Infisical

    The gist

    Install:

    $ yarn add bullmq
    

    Add jobs to the queue:

    import { Queue } from 'bullmq';

    const queue = new Queue('Paint');

    queue.add('cars', { color: 'blue' });

    Process the jobs in your workers:

    import { Worker } from 'bullmq';

    const worker = new Worker('Paint', async job => {
    if (job.name === 'cars') {
    await paintCar(job.data.color);
    }
    });

    Listen to jobs for completion:

    import { QueueEvents } from 'bullmq';

    const queueEvents = new QueueEvents('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 official documentation

    Feature Comparison

    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 the contributing doc that has more details.

    Thanks

    Thanks for all the contributors that made this library possible, also a special mention to Leon van Kammen that kindly donated his npm bullmq repo.