프로젝트 소개

Agenda는 Node.js용 경량 작업 스케줄링 라이브러리로, 최소한의 오버헤드와 영구 작업 저장을 위해 설계되었습니다. Promise 기반 API를 제공하며, cron 또는 사람이 읽을 수 있는 간격으로 스케줄링을 지원하고, 구성 가능한 우선순위, 동시성, 반복 작업, 작업 결과 영속성과 같은 기능을 포함합니다. 주요 기능은 다음과 같습니다: - **플러그형 백엔드 시스템**: MongoDB(기본), PostgreSQL, Redis 백엔드가 공식 지원되며, 다른 저장 시스템을 위한 사용자 정의 백엔드 인터페이스도 제공됩니다. - **실시간 알림**: 선택적 알림 채널(예: Redis pub/sub, PostgreSQL LISTEN/NOTIFY, MongoDB Change Streams)을 통해 폴링 없이 즉시 작업 처리가 가능합니다. - **TypeScript 재작성**: 완전히 타입이 지정된 최신 ES 모듈(Node.js 18+). - **백오프 자동 재시도**: 구성 가능한 지연, 최대 재시도 횟수, 지터와 함께 상수, 선형, 지수 백오프 전략이 내장되어 있습니다. - **작업 디바운싱**: 중복 작업 실행을 방지합니다. - **영구 작업 로깅**: 작업 수명 주기 이벤트의 선택적 구조화 로깅을 데이터베이스에 제공합니다. - **포크 모드**: 격리를 위한 샌드박스 작업 실행. - **모니터링**: 작업 큐 통계를 위한 `getRunningStats()`. - **Agenda-rest**: 선택적 독립 REST API. - **Agendash**: 작업 관리를 위한 선택적 웹 인터페이스. Agenda는 장기 실행 작업에 적합하며, 사람이 읽을 수 있는 간격을 지원하고, 여러 작업 프로세서가 있는 분산 환경에서 사용할 수 있습니다. 또한 완료된 작업의 자동 정리와 구성 가능한 잠금 수명을 제공합니다.