Sobre o projeto

Agenda é uma biblioteca leve de agendamento de tarefas para Node.js, projetada para sobrecarga mínima e armazenamento persistente de tarefas. Ela fornece uma API baseada em promessas, suporta agendamento via cron ou intervalos legíveis por humanos, e inclui recursos como prioridade configurável, concorrência, tarefas repetidas e persistência de resultados de tarefas. Os principais recursos incluem: - **Sistema de backend plugável**: backends MongoDB (padrão), PostgreSQL e Redis são oficialmente suportados, com uma interface de backend personalizada para outros sistemas de armazenamento. - **Notificações em tempo real**: canais de notificação opcionais (ex.: pub/sub do Redis, LISTEN/NOTIFY do PostgreSQL, Change Streams do MongoDB) permitem processamento imediato de tarefas sem polling. - **Reescrita em TypeScript**: módulos ES totalmente tipados e modernos (Node.js 18+). - **Nova tentativa automática com backoff**: estratégias internas de backoff constante, linear e exponencial com atrasos configuráveis, máximo de tentativas e jitter. - **Debouncing de tarefas**: evita execuções duplicadas de tarefas. - **Registro de tarefas persistente**: registro estruturado opcional de eventos do ciclo de vida da tarefa no banco de dados. - **Modo fork**: execução de tarefas em sandbox para isolamento. - **Monitoramento**: `getRunningStats()` para estatísticas da fila de tarefas. - **Agenda-rest**: API REST autônoma opcional. - **Agendash**: interface web opcional para gerenciar tarefas. Agenda é adequada para tarefas de longa duração, suporta intervalos legíveis por humanos e pode ser usada em ambientes distribuídos com múltiplos processadores de tarefas. Também oferece limpeza automática de tarefas concluídas e tempos de retenção de bloqueio configuráveis.