UNPKG

@srttk/queue

Version:

BullMQ queues simplified.

63 lines (59 loc) 2.81 kB
import * as bullmq from 'bullmq'; import { Job, QueueOptions, JobsOptions, WorkerOptions, WorkerListener, Queue, RepeatOptions, Worker, ConnectionOptions } from 'bullmq'; interface IQueueProcess<Payload = any, Result = any> { name: string; process(job: Job<Payload, Result>): Promise<Result>; groupName?: string; options?: Partial<QueueOptions>; defaultJobOptions?: JobsOptions; workerOptions?: Partial<WorkerOptions>; onActive?: WorkerListener<Payload, Result>["active"]; onClosed?: WorkerListener<Payload, Result>["closed"]; onCompleted?: WorkerListener<Payload, Result>["completed"]; onError?: WorkerListener<Payload, Result>["error"]; onDrained?: WorkerListener<Payload, Result>["drained"]; onFailed?: WorkerListener<Payload, Result>["failed"]; onPaused?: WorkerListener<Payload, Result>["paused"]; onProgress?: WorkerListener<Payload, Result>["progress"]; onReady?: WorkerListener<Payload, Result>["ready"]; onStalled?: WorkerListener<Payload, Result>["stalled"]; } type QueueManagerConfig = { namespace?: string; connection?: ConnectionOptions; defaultWorkerOptions?: Partial<WorkerOptions>; defaultQueueOptions?: Partial<QueueOptions>; defaultJobOptions?: Partial<JobsOptions>; }; declare class QueueManager<T extends Record<string, IQueueProcess>> { private _queueMap; private queues; private workers; private config?; private connection; private shutdownTriggered; private _defaultQueueOptions; private _defaultWorkerOptions; private _defaultJobOptions; constructor(queueMaps: T, config?: QueueManagerConfig); get namespace(): string; startQueues(): Queue<any, any, string, any, any, string>[]; startWorkers(groupName?: string | null): void; addJob<K extends keyof T>(name: K, jobname: string, payload: T[K] extends IQueueProcess<infer P> ? P : never, jobOptions?: JobsOptions): Promise<bullmq.Job<any, any, string>>; scheduleJob<K extends keyof T>(name: K, schedulerId: string, repeat: Omit<RepeatOptions, "key">, payload: { name: string; data?: T[K] extends IQueueProcess<infer P> ? P : never; opts?: JobsOptions; }): Promise<bullmq.Job<any, any, string>>; removeScheduleJob<K extends keyof T>(name: K, schedulerId: string): Promise<boolean>; getQueues(): Queue<any, any, string, any, any, string>[]; getQueue<K extends keyof T>(name: K): Queue<any, any, string, any, any, string>; getWorkers(): Worker<any, any, string>[]; getWorker<K extends keyof T>(name: K): Worker<any, any, string>; private getFromMapByName; private getQueueByName; private getWorkerByName; shutdown(): Promise<void>; setConnection(conn: ConnectionOptions): void; } export { type IQueueProcess, QueueManager };