DocsGetting StartedQuick Start

Quick Start Guide

Get started with Cleo in minutes. Learn how to install, configure and run your first distributed task.

⚡ Quick Start - Zero to Hero in 5 Minutes!

🚀 Installation

# Install Cleo
npm install @cleotasks/core

🎯 Basic Configuration

import { Cleo } from "@cleotasks/core";
import { TaskPriority } from "@cleotasks/core/types/enums";
 
// Get Cleo instance
const cleo = Cleo.getInstance();
 
// Configure Redis connection and worker settings
cleo.configure({
  redis: {
    host: "localhost",
    port: 6379,
    password: "cleosecret",
  },
  worker: {
    concurrency: 4,
    queues: [
      {
        name: "send-email",
        priority: TaskPriority.HIGH,
      },
    ],
  },
});

🎨 Creating Your First Task

import { task } from "@cleotasks/core/decorators/task";
 
class EmailService {
  @task({
    id: "send-email",
    priority: TaskPriority.HIGH,
    queue: 'send-email',
  })
  sendEmail(input: { email: string }): Promise<string> {
    return Promise.resolve(`Sent to ${input.email}`);
  }
}
 
// Create service instance
const emailService = new EmailService();

📊 Monitoring Tasks

import { ObserverEvent } from "@cleotasks/core/types/enums";
 
// Get queue manager for monitoring
const queueManager = cleo.getQueueManager();
 
// Set up observers for monitoring
queueManager.onTaskEvent(ObserverEvent.STATUS_CHANGE, (taskId, status, data) => {
  console.log(`Task ${taskId} status changed to ${status}`, data);
});
 
queueManager.onTaskEvent(ObserverEvent.TASK_ADDED, (taskId, status, data) => {
  console.log(`Task ${taskId} added to queue`, status, data);
});
 
queueManager.onTaskEvent(ObserverEvent.TASK_COMPLETED, (taskId, status, data) => {
  console.log(`Task ${taskId} completed`, status, data);
});

🚀 Running Tasks

// Execute the task
await emailService.sendEmail({ email: "test@test.com" });
 
// Clean up event listeners when done
queueManager.offTaskEvent(ObserverEvent.TASK_COMPLETED);