xTaskjs 1.0 ya está disponible: cuentas por rol, documentación y una interfaz personalizable.

Paquetes

@xtaskjs/scheduler

Decoradores cron, interval y timeout con descubrimiento y control de trabajos gestionados por el ciclo de vida.

npm install @xtaskjs/scheduler node-cron reflect-metadata Ruta del paquete: packages/scheduler

Resumen

Qué controla este paquete en el runtime

Scheduler añade trabajos recurrentes y diferidos a los servicios xtask. Descubre los métodos decorados cuando el contenedor DI está listo, ejecuta trabajos de arranque durante la inicialización, inicia el trabajo recurrente en el evento ready del ciclo de vida y expone APIs de servicio para inspección y ejecución manual.

Qué ofrece

  • Los decoradores Cron(), Every(), Interval() y Timeout() declaran trabajos programados en servicios.
  • Admite runOnBoot, runOnInit, grupos con nombre, reintentos y hooks de reintento o error por trabajo.
  • SchedulerService lista trabajos y grupos, y puede iniciarlos, detenerlos o ejecutarlos manualmente.
  • Rastrea el estado de ejecución, como conteos, fallos y el último error de ejecución.

Cómo encaja

  • Se descubre automáticamente durante CreateApplication() después de que el contenedor haya registrado los providers.
  • Inicia los trabajos recurrentes en el evento ready del ciclo de vida y detiene los handles activos durante app.close().
  • Lo demuestra el ejemplo 11-scheduler_app con endpoints de inspección y grupos de mantenimiento.

Mapa de uso

Qué peso tiene este paquete dentro del runtime

Arranque

4/5

Inyección de dependencias

4/5

Planificación

5/5

Operaciones

5/5

Integraciones

4/5

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

Trabajos programados con ejecución agrupada
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