home
자바
home

05-BatchScheduler

스케쥴러

배치 프로세스

흐름에 따라 순차적으로 자료를 처리하는 프로그램.

스케쥴러의 이해

정해진 시간에 따라 특정 함수를 자동으로 실행하게 하는 기능.
스케쥴러란, 사전에 설정된 시간에 준비된 배치 프로그램을 자동으로 실행시키는 기능
실무에서는 배치 + 스케쥴러를 묶어서 배치 스케쥴러라고 부른다.
배치 프로세스, 스케쥴러, 배치 등도 일반적으로는 특정 시간에 자동으로 수행되는 기능들을 의미하는 용어로 통용된다.

사용예시

1.
30일 후에 자동으로 삭제되는 기능
배치 프로스세스가 매일 자정에 삭제 예약이 된지 30일이 경과한 모든 값을 찾아서 삭제하도록 구현.
2.
메일링 리스트와 같이 전체 회원을 대상으로 하는 기능
전체 회원에 대한 동작을 데이터베이스에 등록하면 스케쥴러가 1초 혹은 5초 마다 데이터를 스캔하여 등록된 데이터가 있을 경우 전체 회원에게 순차적으로 수행.

구현 방법

패키지 설치

npm install --save node-schedule
Plain Text
복사

구현방법

const schedule = require('node-schedule'); schedule.scheduleJob(특정시각|시간규칙, function() { ... 수행할 기능 ... });
Plain Text
복사
특정 시각은 지정된 시간이 되었을 때 1회만 실행
시간 규칙
시간간격: 5분마다, 1시간 마다
스케쥴: 매일 n시 n분

Crontab 표현식

Crontab

리눅스나 Mac 운영체제 자체적으로 제공하는 스케쥴러 기능(터미널 명령어)

스케쥴러 기능의 Crontab 표현식 지원

리눅스나 Mac 명령어에서 사용하는 스케쥴링 표현식을 지원
* * * * * 수행할 명령어 ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일) │ │ │ └───────── 월 (1 - 12) │ │ └───────── 일 (1 - 31) │ └───────── 시 (0 - 23) └───────── 분 (0 - 59)
Plain Text
복사

표현식 생성하기

매 1분마다

* * * * *
Plain Text
복사

매시 15분과 45분에

15,45 * * * *
Plain Text
복사

10분마다

*/10 * * * *
Plain Text
복사

매일 02시15분에

15 2 * * *
Plain Text
복사

매일 0시 정각에

0 0 * * *
Plain Text
복사

매 6시간마다 수행(00:30, 06:30, 12:30, 18:30)

30 */6 * * *
Plain Text
복사

1시부터 23시까지 매 4시간마다 수행(01:30, 05:30, 09:30, 12:30, 16:30, 20:30)

30 1-23/4 * * *
Plain Text
복사

평일(월요일~금요일) 08:00에 수행

0 8 * * 1-5
Plain Text
복사

주말(일요일, 토요일) 08:00

0 8 * * 0,6
Plain Text
복사

소스파일

05-BatchScheduler.zip
3.4KB