728x90
반응형
Quartz 라이브러리 연동을 통한 스케쥴러 구현
Apache Camel 프로젝트의 하위 프로젝트인 Quartz 이용하면 Unix 나 Linux 에서 사용하는 crontab 과 같은 스케쥴러를 손쉽게 구현하고 제어 할 수 있다.
Quartz 는 기본적으로 log4j 를 사용하여 로그를 출력하기때문에 Quartz 사용시 log4j 라이브러리를 먼저 연동해줘야 정상적으로 사용이 가능하다 .
이번에 나름 독자적인 배치 모듈을 개발하다 보니 Quartz 를 상당히 유용하게 사용하였다.
공식 사이트 링크 : 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 |
728x90
반응형
'JAVA' 카테고리의 다른 글
MAXMIND GeoIP를 이용한 클라이언트 접속 국가 정보 확인 (1) | 2014.07.22 |
---|---|
Locale 클래스를 이용한 표준 국가 명 한글로 얻어오기 (1) | 2014.07.01 |
외부 설정파일을 읽어들여 값을 반환하는 ConfigInjector 클래스 (0) | 2014.05.06 |
Filter 클래스를 이용한 호환성보기 헤더 변조 (0) | 2014.03.17 |
파일확장자를 필터링 하는 클래스 - FileExtFilter (0) | 2014.03.06 |