QueueLemur
es una cola de tareas con soporte para ejecución diferida y persistencia.
Para instalar el paquete, utiliza npm:
npm install queue-lemur
A continuación se muestra un ejemplo básico de cómo utilizar QueueLemur en tu proyecto.
import { QueueLemur, QueueLocalMemory } from "queue-lemur";
// Define las opciones de la cola
const options = {
callback: async (task: any) => {
// Procesa la tarea
console.log("Procesando tarea:", task);
},
error: (error: Error) => {
// Maneja errores
console.error("Error en la tarea:", error.message);
},
memory: new QueueLocalMemory<any>(), // Opcional: Puedes proporcionar tu propia implementación de memoria
};
// Crear una instancia de QueueLemur
const queue = new QueueLemur<any>("miCola", options, 2); // La concurrencia es de 2
const task1 = { id: 1, name: "Tarea 1" };
const task2 = { id: 2, name: "Tarea 2" };
// Agregar tarea con una demora de 3 segundos
queue.add("task1", task1, { delay: 3000 });
// Agregar otra tarea con una demora de 5 segundos
queue.add("task2", task2, { delay: 5000 });
add(key: string, task: T, opts?: TaskOptions<T>): Promise<void>
Agrega una tarea a la cola con una demora especificada.
key
: Clave única para la tarea.task
: La tarea a agregar.opts
: Opciones para la tarea, incluyendo la demora.
callback?
: (task: T) => Promise - The action to be executed for each task.error?
: (e: any) => void - The error handler for tasks.
getTasks(): Map<string, NodeJS.Timeout>
Devuelve el mapa de temporizadores que contiene todas las tareas activas.
getTask(key: string): NodeJS.Timeout | undefined
Recupera un temporizador de tarea específico basado en su clave.
getQueue(index: number): T | undefined
Recupera una tarea de la cola basada en su índice.
hasQueue(): boolean
Comprueba si hay tareas actualmente en la cola.
hasTasks(): boolean
Comprueba si hay tareas activas (temporizadores) en ejecución.
getQueueLength(): number
Devuelve la longitud de la cola.
getName(): string
Devuelve el nombre de la cola.
-
Logging:
Añadir más logging para monitorizar el estado de la cola y las tareas podría ser útil en un entorno de producción. -
Documentación:
Añadir comentarios y documentación para mejorar la mantenibilidad y la comprensión del código.