UNPKG

@cleotasks/core

Version:

A distributed task queue system for Node.js, inspired by Celery and BullMQ

66 lines (65 loc) 3.24 kB
import { Queue, QueueOptions } from "bullmq"; import { Task, TaskOptions, WorkerConfig } from "../types/interfaces"; import { ObserverEvent } from "../types/enums"; import { RedisInstance } from "../config/redis"; import { TaskObserverCallback } from "../observers/taskObserver"; import { TaskGroup } from "../groups/taskGroup"; import { Worker } from "../workers"; import { DeadLetterQueue } from "./deadLetterQueue"; export type WorkerType = Worker; export type WorkerMap = Map<string, WorkerType>; export declare class QueueManager { private queues; private queueEvents; private observer; private groups; private redis; private instanceId; private workers; deadLetterQueue: DeadLetterQueue; private metrics; private healthCheckInterval; private shouldCreateWorkers; private workerConfig; private readonly QUEUES_SET_KEY; private readonly QUEUE_META_PREFIX; private readonly QUEUE_CONFIG_PREFIX; constructor(defaultQueueName?: string, redisInstance?: RedisInstance, queueOptions?: Partial<QueueOptions>, workerOptions?: WorkerConfig, createWorkers?: boolean); getQueues(): Promise<string[]>; getQueueMetadata(queueName: string): Promise<any>; private updateQueueMetadata; private storeQueueConfig; private getQueueConfig; private initializeQueue; initializeWorker(queueName: string, workerOptions?: WorkerConfig, instanceId?: string): void; createQueue(queueName: string, queueOptions: QueueOptions, createWorkers?: boolean): Promise<Queue>; getQueue(queueName: string): Promise<Queue | null>; getQueueMetrics(queueName: string): Promise<import("./queueMetrics").QueueMetricsData[]>; getLatestQueueMetrics(queueName: string): Promise<import("./queueMetrics").QueueMetricsData | null>; getAllQueueMetrics(): Promise<Record<string, import("./queueMetrics").QueueMetricsData>>; getAllWorkers(): Promise<string[]>; getQueueWorkers(queueName: string): Promise<string[]>; getWorkerById(workerId: string): Promise<WorkerType | undefined>; getWorker(queueNameOrId?: string): WorkerType | undefined; private startQueueMetricsCollection; private getAverageWaitingTime; addTask(name: string, data: any, options?: TaskOptions): Promise<Task>; getTask(taskId: string, queueName?: string): Promise<Task | null>; getAllTasks(): Promise<Task[]>; removeTask(taskId: string, queueName?: string): Promise<boolean>; getQueueTasks(queueName: string): Promise<Task[]>; getGroup(groupName: string): Promise<TaskGroup>; addTaskToGroup(methodName: string, taskOptions: TaskOptions, taskData: any): Promise<void>; ensureTaskInQueue(task: Task, queueName: string): Promise<void>; completeGroupTask(taskId: string, groupName: string): Promise<void>; getAllGroups(): Promise<string[]>; onTaskEvent(event: ObserverEvent, callback: TaskObserverCallback): void; offTaskEvent(event: ObserverEvent): void; private setupTaskObservers; updateTask(task: Task): Promise<void>; close(): Promise<void>; startHealthCheck(interval?: number): void; stopHealthCheck(): void; private getGroupPriority; setGroupPriority(groupName: string, priority: number): Promise<void>; }