티스토리 뷰
Java 에서 스케쥴러 사용 시 많이 쓰는 Quartz 에 대한 내용입니다.
Quartz 에서 사용하는 Trigger 는 SimpleTrigger 와 CronTrigger 가 있습니다.
이 글 에서는 SimpleTrigger 는 간략히 설명만 하고 CronTrigger 의 설정 값에 대해 알아보도록 하겠습니다.
-- SimpleTrigger
Simpletrigger 의 특징은 interval, delay, repeat times 등을 설정 할 수 있으며
Job 을 특정 시간에 실행되게 하거나 특정 기간에 반복 수행하도록 할 시에 사용됩니다.
org.quartz.SimpleTrigger 로 Trigger 를 상속 받으면서 아래와 같은 속성을 지니고 있습니다.
...
public SimpleTrigger(String name, String group, Date startTime, Date endTime, int repeatCount, long repeatInterval)
{
super(name, group);
setStartTime(startTime);
setEndTime(endTime);
setRepeatCount(repeatCount);
setRepeatInterval(repeatInterval);
}
...
String name : Job 이름
String group : Group 이름
Date startTime : Trigger 시작시간
Date endTime : Trigger 종료 시간
int repeatCount : 수행 횟수
long repeatInterval : 수행 간격
예제 )
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
// start() 상태의 Trigger 만 발동 되므로 start()시켜준다.
scheduler.start();
// Create JobDetail Instance
JobDetail jobDetail = new JobDetail("TestScheduler", CustomUser.class);
// Create Trigger Instance
SimpleTrigger trigger = new SimpleTrigger("TestTrigger");
// 옵션 설정
// 반복 횟수
trigger.setRepeatCount(10);
// 수행 간격
trigger.setRepeatInterval(1000);
sched.scheduleJob(jobDetail, trigger);
-- CronTrigger
CronTrigger 는 공백으로 굽누되는 6~7 자리의 문자로 수행시간이 설정됩니다.
필드명 | 필수여부 | 값 | 허용 특수문자 |
초(Second) | Y | 0~59 | , - * / |
분(Minute) | Y | 0~59 | , - * / |
시(Hour) | Y | 0~23 | , - * / |
일(Day) | Y | 1~31 | , - * / ? L W |
월(Month) | Y | 1~12 or JAN~DEC | , - * / |
요일(Week) | Y | 1~7 or SUN~SAT | , - * / ? L # |
년(Year) | N | null, 1979~2099 | , - * / |
- 허용 특수문자의 의미
- * : 모든 값. 0초~59초.
- ? : 특정 값을 정하지 않은 것. 일과 요일에서 사용가능하며 일에 사용할 경우 어떤 요일도 상관 없는 것을 의미.
- - : 범위를 의미. 0-10이면 0부터 10까지. (10 포함)
- , : 여러 개의 값을 함께 쓸 때 사용. 0-10,20-30은 0부터 10까지, 20부터 30까지.
- / : 증분을 의미. 0/10 일 경우 10초 마다. (0, 10, 20, 30, 40, 50)
- L : 마지막을 뜻함. 날짜에 사용할 경우 월의 마지막 날을 의미.
- W : 주중를 의미. 날짜와 함께 쓰면 그 날이 주중인 날을 의미.
- # : n번째를 의미. 그 달의 몇 번째 무슨 요일을 설정할 때 사용. (2#3 은 3번째 월요일)
위와 같으며 설정은 아래와 같습니다.
* 아래의 내용은 검색을 통해 발췌한 내용 입니다.
설정 | 의미 |
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분 |
* 아래의 내용은 검색을 통해 발췌한 내용 입니다.
* 참고 사항
- 날짜와 요일에서 ?를 사용할 수 있는데 서로 배타적입니다. 즉, 날짜에 ?를 쓰면 요일에 사용할 수 없고, 요일에 ?를 쓰면 날짜에는 사용할 수 없습니다. 이것은 매달 x일이 y요일인 경우가 거의 발생할 수 없기 때문입니다.
- 범위(-)를 사용할 때 마지막 값을 포함한다는 것에 주의해야합니다. 특정 시간을 제외할 경우, 예를 들어 매일 6시를 제외할 경우에 0-5,7-23으로 표현해야합니다. 0-6,7-23으로 표현하면 6시까지 포함됩니다. 시간만 표현할 때는 헷갈리지 않는데 분과 같이 사용할 때 혼동하기 쉽습니다. 위의 예에 이어서 매 10분마다 실행한다고 할 때, 0 0/10 0-5,7-23 * * ? 로 표현합니다.
- 날짜에 L과 W를 함께 사용(LW)하면 "매월 마지막 평일(weekday)"을 의미합니다.
- 요일에 x#5를 사용하면 5번째 주에 x요일인 날을 의미합니다.
- 국내에서는 특별히 고려하지 않아도 되지만 해외 시간을 이용하는 경우에는 썸머타임(daylight saving)을 고려해야합니다. 자정부터 새벽 1시까지의 시간은 썸머타임 시행시 건너뛰거나 반복해서 실행 될 가능성이 있습니다.
'프로그래밍' 카테고리의 다른 글
[JAVASCRIPT] Selector 시 특수문자 (0) | 2016.12.24 |
---|---|
[JAVA] iBatis 에서 오라클 프로시저 호출하기 (0) | 2016.12.24 |
[JAVASCRIPT] 자바스크립트 바이트 체크 (0) | 2016.12.24 |
[DB] ORACLE INDEX (0) | 2016.12.24 |
[ETC] DATA URL Scheme (0) | 2016.12.24 |
- Total
- Today
- Yesterday
- 빈트후크
- 칼라마
- 마추피추
- 남미 저가항공
- 후마리
- 쿠스코
- 푸에르토 나탈레스
- 볼리비아
- 족발
- 햄버거
- 성스러운 계곡
- aguas calientes
- 아구아스 칼리엔테스
- 빅토리아폴스
- 토레스 델 파이네
- Namibia
- 킹덤 호텔
- Cambodia
- 성계 투어
- 칠레
- 남미
- Oracle
- 우유니
- 애드센스
- jQuery
- 캄보디아
- calama
- Cusco
- 나미비아
- Uyuni
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |