Quartz 라이브러리 연동을 통한 스케쥴러 구현
Apache Camel 프로젝트의 하위 프로젝트인 Quartz 이용하면 Unix 나 Linux 에서 사용하는 crontab 과 같은 스케쥴러를 손쉽게 구현하고 제어 할 수 있다.
Quartz 는 기본적으로 log4j 를 사용하여 로그를 출력하기때문에 Quartz 사용시 log4j 라이브러리를 먼저 연동해줘야 정상적으로 사용이 가능하다 .
공식 사이트 링크 : http://camel.apache.org/quartz2.html
참조 라이브러리
1. JobScheduler 클래스를 구현
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.Job; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.TriggerBuilder; /** * Quartz 를 사용한 CronScheduler 구현 * * @author digimon1740 * */ public class JobScheduler { String cronExp; Class<? extends Job> clazz; public JobScheduler(Class<? extends Job> clazz, String cronExp) { this.clazz = clazz; this.cronExp = cronExp; } public void triggerJob() { Scheduler sch = null; SchedulerFactory schFactory = null; // schedule the job // this.clazz 는 기본적으로 JobExecuter 클래스이다. JobDetail job = JobBuilder.newJob(this.clazz) .withIdentity(this.clazz.getName()).build(); // batch.properties 에서 크론 표현식을 가져와 Trigger를 생성 CronTrigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity("crontrigger", "crontriggergroup1") .withSchedule(CronScheduleBuilder.cronSchedule(this.cronExp)) .build(); try { schFactory = new service.StdSchedulerFactory(); sch = schFactory.getScheduler(); sch.start(); // JobExecuter.class Start sch.scheduleJob(job, cronTrigger); } catch (SchedulerException e) { } } public static void main(String[] args) { // 매일 오전 2시에 수행 JobScheduler js = new JobScheduler(JobExecuter.class, "0 0 2 * * ?"); js.triggerJob(); } } | cs |
2.Job 인터페이스를 구현하여 execute() 메서드에 스케쥴링에 수행되는 코드를 작성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * Job 인터페이스의 execute() 를 구현함으로써 * Quartz 의 스케쥴링을 이용할 수있다. * * @author digimon1740 * */ public class JobExecuter implements Job { @Override public void execute(JobExecutionContext jec) throws JobExecutionException { // / 스케쥴러에 의해 실행될 Job System.out.println("스케쥴러 수행중.."); } } | cs |
출처: http://devsh.tistory.com/entry/Quartz-라이브러리-연동을-통한-스케쥴러-구현 [날샘 코딩]
'공부방 > Spring' 카테고리의 다른 글
STS4 설치와 개발 환경 설정 (0) | 2019.01.02 |
---|---|
스프링 쿼츠 (Spring Quartz) 스케쥴러에 배치(Batch) 파일 등록하기 (0) | 2013.07.05 |
Http 응답상태 코드 (0) | 2013.03.12 |
교육5일차 정리 (0) | 2013.03.08 |
교육 4일차 정리 (0) | 2013.03.07 |