Mapa de uso
Qué peso tiene este paquete dentro del runtime
Flujo del paquete
Cómo atraviesa este paquete las fases del runtime de xtaskjs
Antes del arranque
Decora métodos de servicio con Cron, Every, Interval o Timeout para que el scheduler pueda descubrir trabajos desde el contenedor DI.
Durante CreateApplication()
El descubrimiento del scheduler se ejecuta después de que el contenedor esté listo, conectando trabajos a las fases del ciclo de vida y habilitando ejecución en arranque o control por grupos.
Durante app.close()
Los temporizadores recurrentes y handles cron se detienen automáticamente para que el trabajo en segundo plano no sobreviva al proceso de la aplicación.
Superficie API
Exports representativos del paquete original
Decoradores de scheduling
- Cron
- Every
- Interval
- Timeout
Control en tiempo de ejecución
- SchedulerService
- InjectSchedulerService
Superficie de ciclo de vida
- InjectSchedulerLifecycleManager
- initializeSchedulerIntegration
- shutdownSchedulerIntegration
Uso
Flujo típico de adopción
1. Decora métodos de trabajo
Elige Cron para calendarios, Every o Interval para demoras repetidas y Timeout para trabajo puntual después del arranque.
2. Organiza trabajos con opciones
Usa nombres, grupos, reintentos, sobrescrituras de zona horaria y runOnBoot o runOnInit para reflejar la intención operativa en el código.
3. Inspecciona y dispara trabajos en tiempo de ejecución
Inyecta SchedulerService cuando operadores o endpoints de diagnóstico necesiten listar trabajos, ejecutar uno de inmediato o relanzar un grupo completo.
Ejemplo
Fragmento de referencia
import { Service } from "@xtaskjs/core";
import { Cron, InjectSchedulerService, SchedulerService, Timeout } from "@xtaskjs/scheduler";
@Service()
export class ReportsScheduler {
constructor(
@InjectSchedulerService()
private readonly scheduler: SchedulerService
) {}
@Cron("0 */5 * * * *", { name: "reports.flush", group: "reports", runOnBoot: true })
flushReports() {
console.log("flush pending reports");
}
@Timeout("30s", { name: "reports.warmup" })
warmup() {
console.log("warm cache once after startup");
}
async rerunReports() {
await this.scheduler.runGroup("reports");
}
}
Ejemplos
Ejemplos oficiales para revisar después
Ejemplos de referencia: 11-scheduler_app
Relacionados
Paquetes que suelen usarse junto a este