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 |