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