@srttk/queue
Version:
BullMQ queues simplified.
63 lines (59 loc) • 2.81 kB
TypeScript
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 };