***

title: "JobQueueStrategy"
generated: true
---------------

<GenerationInfo sourceFile="packages/core/src/config/job-queue/job-queue-strategy.ts" sourceLine="24" packageName="@vendure/core" />

Defines how the jobs in the [JobQueueService](/current/core/reference/typescript-api/job-queue/job-queue-service#jobqueueservice) are persisted and
accessed. Custom strategies can be defined to make use of external
services such as Redis.

:::info

This is configured via the `jobQueueOptions.jobQueueStrategy` property of
your VendureConfig.

:::

```ts title="Signature"
interface JobQueueStrategy extends InjectableStrategy {
    add<Data extends JobData<Data> = object>(job: Job<Data>, jobOptions?: JobQueueStrategyJobOptions<Data>): Promise<Job<Data>>;
    start<Data extends JobData<Data> = object>(
        queueName: string,
        process: (job: Job<Data>) => Promise<any>,
    ): Promise<void>;
    stop<Data extends JobData<Data> = object>(
        queueName: string,
        process: (job: Job<Data>) => Promise<any>,
    ): Promise<void>;
}
```

* Extends: [`InjectableStrategy`](/current/core/reference/typescript-api/common/injectable-strategy#injectablestrategy)

<div className="members-wrapper">

### add

\<MemberInfo kind="method" type={`(job: <a href='/current/core/reference/typescript-api/job-queue/job#job'>Job</a><Data>, jobOptions?: JobQueueStrategyJobOptions<Data>) => Promise<<a href='/current/core/reference/typescript-api/job-queue/job#job'>Job</a><Data>>`}   />

Add a new job to the queue.

### start

\<MemberInfo kind="method" type={`(queueName: string, process: (job: <a href='/current/core/reference/typescript-api/job-queue/job#job'>Job</a><Data>) => Promise<any>) => Promise<void>`}   />

Start the job queue

### stop

\<MemberInfo kind="method" type={`(queueName: string, process: (job: <a href='/current/core/reference/typescript-api/job-queue/job#job'>Job</a><Data>) => Promise<any>) => Promise<void>`}   />

Stops a queue from running. Its not guaranteed to stop immediately.

</div>
