NestJS Task Scheduling

Task Scheduling이란 주기적으로 반복적인 작업을 처리하는 것을 말합니다. 

 

스프링 프로젝트에서도 scheduler를 이용하여 이러한 반복적인 작업을 처리하는데  테크팀에서 관리하는 스프링 프로젝트들의 경우 반복적으로 처리해야될 비즈니스 로직 및 데이터의 규모가 방대하기 때문에 스프링 배치를 이용하여 프로젝트를 구성하였고, 여기에 Cronicle을 이용하여 Scheduling을 관리하고 있습니다.

 

NestJS 프로젝트의 경우 반복적으로 처리해야될 작업이 많지 않았고(현재는 엘라스틱 서치에 인덱싱 하는 작업 1개만 존재), 그 데이터의 규모 또한 크지 않다고 판단하여서 자체적으로 지원하는 schedule 모듈을 사용하기로 결정 하였습니다.

 

"dependencies": {
    "@nestjs/schedule": "^4.0.0",
 },
 "devDependencies": {
    "@types/cron": "^2.4.0",
 },

package.json에 다음을 추가하고 패키지를 설치하자.

 

imports: [
    // ScheduleModule 설정
    ScheduleModule.forRoot(),
]

@Injectable()
export default class TestJob {
  constructor() {}

  @Cron('*/10 * * * *', { name: 'testCron' })
  testCron() {
    console.log('testCron');
  }
}

ScheduleModule을 설정하고 스프링에서 사용하듯이 @Cron 데코레이터 사용하여 주기값을 설정하면 동작하게 됩니다.

 

마지막으로 서버를 시작후 콘솔창에서 로그를 확인할 수 있습니다.

 

이상 Task Scheduling방법 대한 글을 마치며, 다음글에서는  Redis Util 대해 간단하게 설명하도록 하겠습니다.

 
 

'Backend(Framework) > NestJS' 카테고리의 다른 글

NestJS Redis Util  (0) 2023.12.18
NestJS Health Check  (1) 2023.12.02
NestJS Cors와 Cookie설정  (0) 2023.12.02
NestJS Yaml 파일 설정 관리  (1) 2023.12.02
NestJS 스웨거(Swagger) 설정  (1) 2023.12.02
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유