UNPKG

@cleotasks/core

Version:

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

70 lines (69 loc) 2.67 kB
import { task } from "./decorators/task"; import { QueueManager } from "./queue/queueManager"; import { Worker } from "./workers"; import type { Task, TaskOptions, WorkerConfig, QueueMetrics } from "./types/interfaces"; import { redisConnection, RedisInstance } from "./config/redis"; import { WorkerManager } from "./workers/workerManager"; declare class Cleo { private static instances; protected queueManager: QueueManager | null; private isConfigured; private readonly instanceId; task: typeof task; constructor(instanceId?: RedisInstance); static getInstance(instanceId?: RedisInstance): Cleo; configure(config: { redis: { host: string; port: number; password?: string; tls?: boolean; db?: number; }; worker?: WorkerConfig; }): void; getInstanceId(): string; getQueueManager(): QueueManager; getWorker(queueName: string): Worker | undefined; getWorkerManager(): WorkerManager; } export { Cleo, Task, TaskOptions, WorkerConfig, QueueMetrics, redisConnection, task, }; export { QueueManager } from "./queue/queueManager"; export { TaskGroup, type GroupConfig } from "./groups/taskGroup"; export { TaskObserver, type TaskObserverCallback, } from "./observers/taskObserver"; export { TaskState, TaskStatus, TaskPriority, LogLevel, ObserverEvent, GroupOperation, GroupProcessingStrategy, WorkerState, } from "./types/enums"; export { Worker } from "./workers"; export { TaskHistoryService, type ExtendedTaskHistoryEntry } from "./services/taskHistory"; /** * Example usage: * * // Create a queue manager * const queueManager = new QueueManager('default'); * * // Subscribe to task events * queueManager.onTaskEvent(ObserverEvent.STATUS_CHANGE, (taskId, status, data) => { * logger.info('File: index.ts 📝, Line: 8, Function: onTaskEvent; Task status changed', { * taskId, * status, * data * }); * }); * * // Create a task group and add tasks * await queueManager.addTaskToGroup('task-1', 'important-tasks'); * await queueManager.addTaskToGroup('task-2', 'important-tasks'); * * // Get all tasks in a group * const tasks = await queueManager.getGroupTasks('important-tasks'); * logger.info('File: index.ts 📋, Line: 17, Function: example; Retrieved group tasks', { * groupName: 'important-tasks', * tasks * }); * * // Remove a task from a group * await queueManager.removeTaskFromGroup('task-1', 'important-tasks'); * logger.info('File: index.ts 🗑️, Line: 23, Function: example; Removed task from group', { * taskId: 'task-1', * groupName: 'important-tasks' * }); */