NestJS
Task Scheduling
Scheduling cron jobs, timeouts, and intervals in NestJS.
App Module: Initializing the Schedule module.
app.module.ts
typescript
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { TasksService } from './tasks.service';
@Module({
imports: [
ScheduleModule.forRoot()
],
providers: [TasksService],
})
export class AppModule {}
Task Service: Creating scheduled tasks using Cron, Interval, and Timeout decorators.
tasks.service.ts
typescript
import { Injectable, Logger } from '@nestjs/common';
import { Cron, CronExpression, Interval, Timeout } from '@nestjs/schedule';
@Injectable()
export class TasksService {
private readonly logger = new Logger(TasksService.name);
// Runs every 45 seconds
@Cron('45 * * * * *')
handleCron() {
this.logger.debug('Called when the current second is 45');
}
// Predefined cron expressions
@Cron(CronExpression.EVERY_10_MINUTES)
handleFrequentCron() {
this.logger.debug('Called every 10 minutes');
}
// Runs every 10 seconds
@Interval(10000)
handleInterval() {
this.logger.debug('Called every 10 seconds');
}
// Runs once after 5 seconds
@Timeout(5000)
handleTimeout() {
this.logger.debug('Called once after 5 seconds');
}
}