@cleotasks/core
Version:
A distributed task queue system for Node.js, inspired by Celery and BullMQ
66 lines (65 loc) • 3.24 kB
TypeScript
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>;
}