nestjs-scheduling
Distributed cron jobs and locking patterns.
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
Task Scheduling & Jobs
Priority: P1 (OPERATIONAL)
Background job processing and scheduled task patterns.
-
Problem:
@Cron()runs on every instance. In K8s with 3 pods, your "Daily Report" runs 3 times. -
Solution: Distributed Locking using Redis.
- Pattern: Using a decorator to wrap the cron method.
-
Logic:
SET resource_name my_random_value NX PX 30000(Redis Atomic Set).
Cron Decorator Pattern
-
Implementation:
@Cron(CronExpression.EVERY_MINUTE) @DistributedLock({ key: 'send_emails', ttl: 5000 }) async handleCron() { // Only runs if lock acquired } -
Tools: Use
nestjs-redlockor custom Redis wrapper viaredlocklibrary.
Job Robustness
-
Isolation: Never perform heavy processing inside the Cron handler.
- Pattern: Cron -> Push Job ID to Queue (BullMQ) -> Worker processes it.
- Why: Cron schedulers can get blocked by the Event Loop; Workers are scalable.
-
Error Handling: Wrap ALL cron logic in
try/catch. Uncaught exceptions in a Cron job can crash the entire Node process.
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!