JobQueue
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
property
stringstarted
property
booleanconstructor
method
(options: CreateQueueOptions<Data>, jobQueueStrategy: JobQueueStrategy, jobBufferService: JobBufferService) => JobQueueadd
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
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
const job = await this.myQueue.add({ intervalMs, shouldFail }, { retries: 2 });
return job.updates().toPromise()
  .then(update => update.result),
  .catch(err => err.message);