Skip to main content

JobQueue

A JobQueue is used to process Jobs. A job is added to the queue via the .add() method, and the configured JobQueueStrategy will check for new jobs and process each according to the defined process function.

Note: JobQueue instances should not be directly instantiated. Rather, the JobQueueService createQueue() method should be used (see that service for example usage).

Signature
class JobQueue<Data extends JobData<Data> = object> {    name: string    started: boolean    constructor(options: CreateQueueOptions<Data>, jobQueueStrategy: JobQueueStrategy, jobBufferService: JobBufferService)    add(data: Data, options?: JobOptions<Data>) => Promise<SubscribableJob<Data>>;}

name

propertystring

started

propertyboolean

constructor

method(options: CreateQueueOptions<Data>, jobQueueStrategy: JobQueueStrategy, jobBufferService: JobBufferService) => JobQueue

add

method(data: Data, options?: JobOptions<Data>) => Promise<SubscribableJob<Data>>

Adds a new Job to the queue. The resolved SubscribableJob allows the calling code to subscribe to updates to the Job:

Example

Ts
const job = await this.myQueue.add({ intervalMs, shouldFail }, { retries: 2 });return job.updates().pipe(  map(update => {    // The returned Observable will emit a value for every update to the job    // such as when the `progress` or `status` value changes.    Logger.info(`Job ${update.id}: progress: ${update.progress}`);    if (update.state === JobState.COMPLETED) {      Logger.info(`COMPLETED ${update.id}: ${update.result}`);    }    return update.result;  }),  catchError(err => of(err.message)),);

Alternatively, if you aren't interested in the intermediate progress changes, you can convert to a Promise like this:

Example

Ts
const job = await this.myQueue.add({ intervalMs, shouldFail }, { retries: 2 });return job.updates().toPromise()  .then(update => update.result),  .catch(err => err.message);
Was this chapter helpful?
Report Issue
Edited Feb 2, 2026·Edit this page