Quartz 사용하기
참조 : http://www.onjava.com/pub/a/onjava/2004/03/10/quartz.html?page=1
필요한 dependency
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.5.2</version>
</dependency>
Quartz의 핵심 라이브러리
- Job : 작업을 정의할 때는 이 인터페이스를 구현하고 execute 메소드를 구현해 주어야 합니다.
- SchedulerFactory
- StdSchedulerFactory : 클래스패스에 quartz.properties 파일을 먹고 삽니다. 프로퍼티 파일의 이름이 이와 같지 않다면, 생성자에 직접 이름을 세팅해 줍니다.
- Scheduler : 스케쥴 팩토리에서 얻어 옵니다. JobDetail과 Trigger를 가지고 스케쥴을 정할 수 있습니다.
- JobDetail : 매번 Job의 객체를 만들지 않고, JobDetail을 사용합니다.
- Trigger : 작업을 언제 실행할 지 정의합니다.
- SimpleTrigger : interval time, repeat times 등을 설정할 수 있습니다.
- CronTrigger : Linux의 cron 하고 비슷하게, 특정 시간이 되면 발동하게 해줍니다.
try {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();
JobDetail jobDetail = new JobDetail("ipNotify", "SLT", IpNotifier.class);
// SimpleTrigger trigger = new SimpleTrigger("ipNotify", "SLT");
// trigger.setRepeatInterval(1l);
// trigger.setRepeatCount(100);
CronTrigger trigger = new CronTrigger("ipNotify", "SLT");
trigger.setCronExpression("* 0,30 * * * ?");
sched.scheduleJob(jobDetail, trigger);
} catch (Exception e) {
e.printStackTrace();
}
}
두 종류의 트리거 중에서 저는 CronTrigger가 더 편한 것 같습니다. SimpleTrigger가 무제한 반복할 수 있는 설정을 어떻게 하는지 모르겠어서 말이죠. 덕분에 cron 설정을 공부했습니다.
초 분 시 날 달 주
http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html