@cvo/plugin-task
v0.0.0
Published
Task scheduling plugin for CVO Framework
Readme
@cvo/plugin-task
Background task scheduling and job queue plugin for CVO Framework, supporting both Cron-style scheduling and persistent asynchronous queues.
🚀 Features
- Declarative Definitions: Use
@Cronand@Taskdecorators on classes or standalone functions. - Multi-Driver Architecture: Supports
memoryfor lightweight async execution andredis(BullMQ) for reliable, persistent queues. - Advanced Task Control: Built-in support for retries, exponential backoff, and concurrency management.
- Automatic Discovery: Framework automatically scans and registers all task handlers on startup.
🛠 Configuration
Configure tasks in your cvo.config.ts:
import { defineConfig } from '@cvo/core';
export default defineConfig({
task: {
driver: 'redis', // 'memory' or 'redis'
redis: { host: 'localhost', port: 6379 },
defaultQueueName: 'my-app-tasks'
}
});🧠 Usage
Scheduled Tasks (@Cron)
import { Cron } from '@cvo/core';
export class SyncService {
@Cron('*/5 * * * *')
async syncData() {
console.log('Syncing data every 5 minutes...');
}
}Asynchronous Tasks (@Task)
import { Task } from '@cvo/core';
@Task({ retry: 3, concurrency: 10 })
export async function sendEmail(data: { to: string }) {
// Logic to send email
}Dispatching Tasks (useTask)
import { useTask } from '@cvo/plugin-task';
const task = useTask();
await task.dispatch('sendEmail', { to: '[email protected]' });🔌 Drivers
- Memory: Default. Tasks run in-process asynchronously. Best for development or simple notifications.
- Redis: Based on BullMQ. Supports persistence and distributed workers. Requires a Redis server.
