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);