Skip to main content

DefaultJobQueuePlugin

A plugin which configures Vendure to use the SQL database to persist the JobQueue jobs using the SqlJobQueueStrategy. If you add this plugin to an existing Vendure installation, you'll need to run a database migration, since this plugin will add a new "job_record" table to the database.

Example

Ts

Configuration

It is possible to configure the behaviour of the SqlJobQueueStrategy by passing options to the static init() function:

pollInterval

The interval in ms between polling for new jobs. The default is 200ms. Using a longer interval reduces load on the database but results in a slight delay in processing jobs. For more control, it is possible to supply a function which can specify a pollInterval based on the queue name:

Example

Ts

concurrency

The number of jobs to process concurrently per worker. Defaults to 1.

backoffStrategy

Defines the backoff strategy used when retrying failed jobs. In other words, if a job fails and is configured to be re-tried, how long should we wait before the next attempt?

By default, a job will be retried as soon as possible, but in some cases this is not desirable. For example, a job may interact with an unreliable 3rd-party API which is sensitive to too many requests. In this case, an exponential backoff may be used which progressively increases the delay between each subsequent retry.

Example

Ts

Removing old jobs

Since v3.3, the job queue will automatically remove old jobs from the database. This is done by a scheduled task which runs every 2 hours by default. The number of jobs to keep in the database can be configured using the keepJobsCount option. The default is 1000.

Example

Ts
Signature

init

A ScheduledTask that cleans up old jobs from the database when using the DefaultJobQueuePlugin. You can configure the settings & schedule of the task via the DefaultJobQueuePlugin options.

Configuration options for the DefaultJobQueuePlugin. These values get passed into the SqlJobQueueStrategy.

Signature

pollInterval

propertynumber | ((queueName: string) => number)
Default:200

The interval in ms between polling the database for new jobs. If many job queues are active, the polling may cause undue load on the database, in which case this value should be increased to e.g. 1000.

concurrency

propertynumber
Default:1

How many jobs from a given queue to process concurrently.

backoffStrategy

Default:() => 1000

The strategy used to decide how long to wait before retrying a failed job.

setRetries

property(queueName: string, job: Job) => number

When a job is added to the JobQueue using JobQueue.add(), the calling code may specify the number of retries in case of failure. This option allows you to override that number and specify your own number of retries based on the job being added.

Example

Ts

useDatabaseForBuffer

propertybooleanv1.3.0

If set to true, the database will be used to store buffered jobs. This is recommended for production.

When enabled, a new JobRecordBuffer database entity will be defined which will require a migration when first enabling this option.

gracefulShutdownTimeout

propertynumberv2.2.0
Default:20_000

The timeout in ms which the queue will use when attempting a graceful shutdown. That means when the server is shut down but a job is running, the job queue will wait for the job to complete before allowing the server to shut down. If the job does not complete within this timeout window, the job will be forced to stop and the server will shut down anyway.

keepJobsCount

propertynumberv3.3.0
Default:1000

The number of completed/failed jobs to keep in the database. This is useful for debugging and auditing purposes, but if you have a lot of jobs, it may be desirable to limit the number of records in the database.

cleanJobsSchedule

propertyScheduledTaskConfig['schedule']v3.3.0
Default:cron => cron.every(2).hours()

The schedule for the "clean-jobs" task. This task will run periodically to clean up old jobs from the database. The schedule can be a cron expression or a function that returns a cron expression.

Was this chapter helpful?
Report Issue
Edited Feb 25, 2026ยทEdit this page