API Reference

Complete API documentation for Cleo, including configuration options, task definitions, worker settings, and monitoring capabilities.

API Reference

Note: Cleo is built on top of BullMQ. For more detailed information about underlying queue features and options, please refer to the BullMQ documentation.

Core Configuration

Cleo.getInstance()

import { Cleo } from "@cleotasks/core";
 
const cleo = Cleo.getInstance();

cleo.configure()

cleo.configure({
  redis: {
    host: string;
    port: number;
    password: string;
    tls?: boolean;
  },
  worker: {
    concurrency: number;
    queues: {
      name: string;
      priority: TaskPriority;
    }[];
  }
});

Decorators

@task Decorator

import { task } from "@cleotasks/core/decorators/task";
 
@task({
  id?: string;
  priority?: TaskPriority;
  queue?: string;
  maxRetries?: number;
  retryDelay?: number;
})

@QueueClass Decorator

import { QueueClass } from "@cleotasks/core/decorators/class";
 
@QueueClass({
  defaultOptions: {
    priority?: TaskPriority;
    maxRetries?: number;
    retryDelay?: number;
    group?: string;
  },
  queue?: string;
})

Queue Management

QueueManager

const queueManager = cleo.getQueueManager();
 
// Event Handling
queueManager.onTaskEvent(event: ObserverEvent, callback: TaskEventCallback);
queueManager.offTaskEvent(event: ObserverEvent);
 
// Group Management
queueManager.setGroupProcessingStrategy(strategy: GroupProcessingStrategy);
queueManager.setGroupPriority(groupId: string, priority: number);
queueManager.getGroup(groupId: string): Promise<Group>;

Task Events

enum ObserverEvent {
  STATUS_CHANGE = "status_change",
  TASK_ADDED = "task_added",
  TASK_COMPLETED = "task_completed",
  TASK_FAILED = "task_failed",
  GROUP_CHANGE = "group_change"
}

Group Processing

enum GroupProcessingStrategy {
  ROUND_ROBIN = "round_robin",
  FIFO = "fifo",
  PRIORITY = "priority"
}

Types

TaskOptions

interface TaskOptions {
  id?: string;
  priority?: TaskPriority;
  queue?: string;
  maxRetries?: number;
  retryDelay?: number;
  group?: string;
}

QueueClassOptions

interface QueueClassOptions {
  defaultOptions?: TaskOptions;
  queue?: string;
}

For more detailed information about underlying queue features, job options, and advanced configurations, please refer to the BullMQ documentation.