NestJS Task Scheduling

Outclass·2022년 8월 31일
0

NestJS+GraphQL+TypeORM 

목록 보기
16/16
post-custom-banner

드디어 NestJS 정리의 마지막이다

Task Scheduling

지정한 날짜 혹은 일정 간격으로 특정 함수가 실행되도록 하는 기능

설치

npm install --save @nestjs/schedule
npm install --save-dev @types/cron
//app.module.ts
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';

@Module({
  imports: [
    ScheduleModule.forRoot()
  ],
})
export class AppModule {}

기능 구현

Cron

import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';

@Injectable()
export class TasksService {
  private readonly logger = new Logger(TasksService.name);

  @Cron('45 * * * * *')
  handleCron() {
    this.logger.debug('Called when the current second is 45');
  }
}
  • cron의 경우 지정한 날짜에 함수가 실행되도록 한다.
  • 날짜형식은 'second minute day(of month) month day(of week)'을 따른다.
  • 위 예시에서는 매 45초마다 함수가 실행된다.

Interval

@Interval(10000)
handleInterval() {
  this.logger.debug('Called every 10 seconds');
}
  • interval의 초는 ms를 기준으로 한다.
  • 위의 함수는 10초(10000ms) 간격으로 함수가 실행된다.

Timeout

@Timeout(5000)
handleTimeout() {
  this.logger.debug('Called once after 5 seconds');
}
  • Timeout의 초는 ms를 기준으로 한다.
  • 위의 함수는 서버 구동 후 5초뒤에 실행된다.

NestJS정리를 마무리하며

솔직히 백알못(?)인 내가 NestJS의 수많은 기능들을 다 돌아볼 수 있었다는 데 굉장히 큰 보람을 느낀다. 물론 정리한 기능들이 완벽히 숙지되지는 않았지만, 이렇게 정리를 하나하나 해나가면서 공부의 깊이가 깊어졌다고 생각한다. 무엇보다 멀게만 느껴졌던 백엔드가 이제는 굉장히 덜 무서워졌다.

NestJS의 구조는 Spring과 거의 비슷한 것으로 보인다. 백엔드 프레임워크 중 가장 대중적으로 사용되는 Spring과 NestJS의 구조가 비슷하다는 것은 가장 효율적인 백엔드 설계 구조가 이미 어느정도 합의되어 있는 것이 아닌가 한다. 어쨌든 이런 과정을 통해 구조를 보는 시야가 확장된 것이 이번 공부의 가장 큰 수확이라고 생각한다.

끝!

profile
When you stop having big dreams that’s when you’ve died, despite not being buried yet.
post-custom-banner

0개의 댓글