@vendure/core
Version:
A modern, headless ecommerce framework
36 lines (35 loc) • 1.2 kB
TypeScript
import { InjectableStrategy } from '../../common';
import { JobData, JobQueueStrategyJobOptions } from '../../job-queue';
import { Job } from '../../job-queue';
/**
* @description
* Defines how the jobs in the {@link 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.
*
* :::
*
* @docsCategory JobQueue
*/
export interface JobQueueStrategy extends InjectableStrategy {
/**
* @description
* Add a new job to the queue.
*/
add<Data extends JobData<Data> = object>(job: Job<Data>, jobOptions?: JobQueueStrategyJobOptions<Data>): Promise<Job<Data>>;
/**
* @description
* Start the job queue
*/
start<Data extends JobData<Data> = object>(queueName: string, process: (job: Job<Data>) => Promise<any>): Promise<void>;
/**
* @description
* Stops a queue from running. Its not guaranteed to stop immediately.
*/
stop<Data extends JobData<Data> = object>(queueName: string, process: (job: Job<Data>) => Promise<any>): Promise<void>;
}