프로그래밍/JAVA

자바기반 스케줄링 프로그래밍(5) - Quartz + CronTrigger

빨강토끼 2014. 11. 13. 17:52

CronTrigger는 앞에서 살펴본 "cron 표현법"을 사용하여 스케줄링 기능을 제공한다.


작업(Job) 실행이 달력 개념을 기반으로 반복된다면  SimpleTrigger보다 CronTrigger가 더 유용하게 사용될 수 있다.


"매주 월요일부터 금요일까지 아침8시” 

"매달 마지막 금요일 새벽1시30분” 


하지만 cron 표현법 보다는 좀 더 자세한 설정이 가능한데 "초(seconds)" 와 "년(year)" 이다.

 필드

 필수

허용  

Special characters

 (seconds)

 Yes

 0-59

 , - * /

 (minutes)

 Yes

 0-59

 , - * / 

 (hours)

 Yes

 0-23

  , - * /

 날짜(day of month)

 Yes

 1-31

  , - * / ? L W

 (month)

 Yes

 1-12 or JAN-DEC

  , - * /

 요일(day of week)

 Yes

 1-7 or SUN-SAT

  , - * / ? L #

 (year)

 No

 empty, 1979-2099

  , - * /


다양한 특수문자 역시 동일하게 사용할수 있다.


* : 모든 값을 의미.

? : 특정 값을 정하지 않음.

- : 범위를 의미. 예) 0-10이면 0부터 10까지.

, : 값을 추가. 0-10,20-30은 0부터 10까지, 그리고 20부터 30까지.

/ : 증분을 의미. 예) 초에 0/15를 사용하면 15초마다(0, 15, 30, 45) .

L : 마지막을 의미. 날짜에 사용하면 월의 마지막 날을 의미. 

    31, 30 또는 28(윤달에는 29).

W : 주중(weekday)를 의미. 날짜와 같이 쓰면 그 날짜가 주중인 날을 의미. 


아래는 몇가지 예를 들어본것이다.



Expression

Meaning

0 0 12 * * ?

매일 12(정오)

0 15 10 ? * *

매일 오전 10 15

0 15 10 * * ?

매일 오전 10 15

0 15 10 * * ? *

매일 오전 10 15

0 15 10 * * ? 2005

2005년에 매일 아침 10 15

0 * 14 * * ?

매일 오후 2 0 ~ 59

0 0/5 14 * * ?

매일 오후 2시부터 2 55분까지 5분마다

0 0/5 14,18 * * ?

매일 오후 2시부터 2 55분까지 5분마다

6시부터 6 55분까지 5분마다

0 0-5 14 * * ?

매일 오후 2시부터 2 5분까지 매분

0 10,44 14 ? 3 WED

매년 3월의 수요일마다 오후 2 10분과 2 44

0 15 10 ? * MON-FRI

월요일부터 금요일까지 오전 10 15

0 15 10 15 * ?

매달 15 오전 10 15

0 15 10 L * ?

매달 마지막 오전 10 15

0 15 10 ? * 6L

매달 마지막 금요일 오전 10 15

0 15 10 ? * 6L 2002-2005

2002년부터 2005년까지 매달 마지막 금요일 오전 10 15

0 15 10 ? * 6#3

매달 3번째 금요일 오전 10 15

0 0 12 1/5 * ?

매달 첫날부터 5일마다 12(정오)

0 11 11 11 11 ?

매년 11 11 오전 11 11



output




소스 : https://github.com/redrebel/Scheduling