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');
  }
}