@redemarajo/job-scheduler
v1.0.0
Published
Agendador de jobs em Node.js com suporte a cron e intervalos, executando cada tarefa em um processo filho isolado com timeout automático.
Readme
@redemarajo/job-scheduler
Agendador de jobs em Node.js com suporte a expressões cron e intervalos fixos. Cada job é executado em um processo filho isolado (child_process.fork) com timeout automático para evitar processos pendurados.
Instalação
npm install @redemarajo/job-schedulerRequer Node.js 16 ou superior.
Uso
import { JobScheduler } from "@redemarajo/job-scheduler";
const scheduler = new JobScheduler({
root: __dirname + "/jobs",
closeWorkerAfterMs: 5 * 60 * 1000, // 5 minutos
logger: (jobName, msg, type) => {
console.log(`[${type ?? "info"}] ${jobName}: ${msg}`);
},
});
scheduler.start([
{ name: "limpaCache", cron: "0 * * * *" },
{ name: "syncEstoque", interval: 60_000, startDelay: 5_000 },
]);Cada name na lista deve corresponder a um arquivo ${name}.js dentro do diretório informado em root.
API
new JobScheduler(options)
| Opção | Tipo | Descrição |
| --- | --- | --- |
| root | string | Diretório onde os scripts dos jobs estão localizados. |
| closeWorkerAfterMs | number | Timeout padrão para encerrar o processo filho. Padrão: 300000 (5 min). |
| logger | (name, msg, type) => void | Callback opcional para logs. |
scheduler.start(jobs)
Inicia o agendamento de uma lista de JobConfig:
| Campo | Tipo | Descrição |
| --- | --- | --- |
| name | string | Nome do job — também é o nome do arquivo .js em root. |
| cron | string | Expressão cron (mutuamente exclusivo com interval). |
| interval | number | Intervalo em ms (mutuamente exclusivo com cron). |
| startDelay | number | Atraso inicial antes da primeira execução (apenas para interval). |
| closeWorkerAfterMs | number | Sobrescreve o timeout padrão para esse job. |
scheduler.run(job)
Executa um job imediatamente, ignorando agendamento.
Licença
MIT
