Skip to main content

Overview

QueueOptions extends QueueBaseOptions and provides configuration for Queue instances.

Interface

interface QueueOptions extends QueueBaseOptions {
  defaultJobOptions?: DefaultJobOptions;
  streams?: {
    events: {
      maxLen: number;
    };
  };
  skipMetasUpdate?: boolean;
  settings?: AdvancedRepeatOptions;
}

Properties

connection

connection: ConnectionOptions
connection
ConnectionOptions
required
Options for connecting to a Redis instance (ioredis configuration or Redis client instance)

prefix

prefix?: string
prefix
string
default:"'bull'"
Prefix for all queue keys in Redis

defaultJobOptions

defaultJobOptions?: DefaultJobOptions
defaultJobOptions
DefaultJobOptions
Default options applied to all jobs added to this queue

streams

streams?: {
  events: {
    maxLen: number;
  };
}
streams.events.maxLen
number
default:"10000"
Max approximated length for the events stream

skipMetasUpdate

skipMetasUpdate?: boolean
skipMetasUpdate
boolean
default:"false"
If true, the queue will not update metadata. Useful for read-only systems

settings

settings?: AdvancedRepeatOptions
settings
AdvancedRepeatOptions
Advanced options for repeatable jobs

skipVersionCheck

skipVersionCheck?: boolean
skipVersionCheck
boolean
default:"false"
Avoid validation that Redis version is >= 5.0.0

skipWaitingForReady

skipWaitingForReady?: boolean
skipWaitingForReady
boolean
default:"false"
Skip waiting for connection to be ready (useful for testing)

telemetry

telemetry?: Telemetry
telemetry
Telemetry
Telemetry client for distributed tracing and metrics

Examples

Basic Queue

import { Queue } from 'bullmq';

const queue = new Queue('myQueue', {
  connection: {
    host: 'localhost',
    port: 6379,
  },
});

With Default Job Options

const queue = new Queue('myQueue', {
  connection: {
    host: 'localhost',
    port: 6379,
  },
  defaultJobOptions: {
    attempts: 3,
    backoff: {
      type: 'exponential',
      delay: 1000,
    },
    removeOnComplete: 1000,
    removeOnFail: 5000,
  },
});

With Custom Prefix

const queue = new Queue('myQueue', {
  connection: {
    host: 'localhost',
    port: 6379,
  },
  prefix: 'myapp',  // Keys will be: myapp:myQueue:*
});

With Event Stream Limits

const queue = new Queue('myQueue', {
  connection: {
    host: 'localhost',
    port: 6379,
  },
  streams: {
    events: {
      maxLen: 1000,  // Keep only 1000 events
    },
  },
});

Read-Only Queue

const queue = new Queue('myQueue', {
  connection: {
    host: 'localhost',
    port: 6379,
  },
  skipMetasUpdate: true,  // Don't update queue metadata
});

With Shared Connection

import IORedis from 'ioredis';

const connection = new IORedis({
  host: 'localhost',
  port: 6379,
  maxRetriesPerRequest: null,
});

const queue1 = new Queue('queue1', { connection });
const queue2 = new Queue('queue2', { connection });

Build docs developers (and LLMs) love