nestjs-scheduling
Distributed cron jobs and locking patterns.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
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.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!