@saas-packages/queue-manager
Version:
Queue manager for SaaS applications using BullMQ
26 lines • 1.86 kB
TypeScript
import { Queue, Worker, QueueOptions, WorkerOptions, Job } from 'bullmq';
import { Logger } from '@saas-packages/core';
import { QueueManagerInterface, QueueManagerConfig, JobProcessor, JobData, QueueJobOptions, QueueManagerEvent, QueueManagerListener } from './types';
import { EventEmitter } from 'events';
export declare class QueueManager extends EventEmitter implements QueueManagerInterface {
private readonly config;
private readonly logger?;
private readonly queues;
private readonly workers;
private readonly redis;
constructor(config: QueueManagerConfig, logger?: Logger | undefined);
subscribe<E extends QueueManagerEvent>(event: E, listener: E extends 'queueCreated' | 'queueRemoved' ? QueueManagerListener['queueEvent'] : E extends 'workerCreated' | 'workerRemoved' | 'workerUpdated' ? QueueManagerListener['workerEvent'] : E extends 'newListener' | 'removeListener' ? QueueManagerListener['listenerEvent'] : E extends 'queueManagerClosed' ? QueueManagerListener['queueManagerClosed'] : never): void;
unsubscribe(event: QueueManagerEvent, listener: (...args: any[]) => void): void;
private notify;
createQueue<T = any>(name: string, options?: Partial<Omit<QueueOptions, 'connection'>>): Queue<T>;
createWorker<P extends JobProcessor<T>, T = unknown>(queueName: string, processor: P, options?: Partial<Omit<WorkerOptions, 'connection'>>): Worker<T>;
addJob<T = JobData>(queueName: string, data: T, options?: QueueJobOptions): Promise<Job<T>>;
getAllQueues(): Queue[];
getQueue<T = any>(name: string): Queue<T> | undefined;
getAllWorkers(): Worker[];
getWorker<T = any>(queueName: string): Worker<T> | undefined;
closeQueue(name: string): Promise<void>;
closeWorker(queueName: string): Promise<void>;
closeAll(): Promise<void>;
}
//# sourceMappingURL=queue-manager.d.ts.map