CODEDRAGON ㆍDevelopment/Software Engineering
♣스케줄링(Scheduling)의 개념
Scheduling 서비스는 애플리케이션 서버 내에서 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 기능(Job Scheduler라고도 한다.)
Quartz 스케줄러 (Open Source Batch Scheduler)
Quartz 스케줄러 구성 및 제공기능
Quartz 스케줄러는 수행 작업을 정의하는 Job과 실행 스케줄을 정의하는 Trigger를 분리함으로써 유연성을 제공한다.
Job과 실행 스케줄을 정의한 경우, Job은 그대로 두고 실행 스케줄만을 변경할 수 있다. 또한 하나의 Job에 여러 개의 실행 스케줄을 정의할 수 있다.
주요 요소 |
설명 |
Scheduler |
Quartz 실행 환경을 관리하는 핵심 개체이다. |
Job |
사용자가 수행할 작업을 정의하는 인터페이스로서 Triger 개체를 이용하여 스케줄할 수 있다. |
JobDetail |
작업명과 작업그룹과 같은 수행할 Job에 대한 상세 정보를 정의하는 개체이다. |
Triger |
정의한 Job 개체의 실행 스케줄을 정의하는 개체로서 Scheduler 개체에게 Job 수행시점을 알려주는 개체이다. |
Quartz 스케줄러 사용 예제
Quartz 스케줄러의 이해를 돕기 위해 간단한 예제를 살펴본다. 다음 예는 Quartz 매뉴얼에서 참조한 것으로 Quartz를 사용하는 방법과 사용자 Job을 설정하는 방법을 보여준다.
사용자 정의 Job
사용자는 Job 개체를 생성하기 위해 org.quartz.Job 인터페이스를 구현하고 심각한 오류가 발생한 경우 JobExecutionException 예외를 던질 수 있다. Job 인터페이스는 단일 메서드로 execute()을 정의한다.
public class DumbJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("DumbJob is executing."); } } |
DumbJob은 Job 인터페이스의 execute() 메서드를 구현한다. execute() 메서드는 단순히 Job이 수행됨을 표시하는 메시지를 출력한다. |
Quartz 사용 코드
JobDetail jobDetail = new JobDetail("myJob",// Job 명 sched.DEFAULT_GROUP, // Job 그룹명('null' 값인 경우 DEFAULT_GROUP 으로 정의됨) DumbJob.class); // 실행할 Job 클래스
Trigger trigger = TriggerUtils.makeDailyTrigger(8, 30); // 매일 08시 30분 실행 trigger.setStartTime(new Date()); // 즉시 시작 trigger.setName("myTrigger");
sched.scheduleJob(jobDetail, trigger); |
우선 Job 설정을 위해 JobDetail 클래스를 정의한다. TriggerUtils을 이용하여 매일 8시30분 실행하는 Trigger를 생성한다. 마지막으로, Scheduler에 JobDetail과 Trigger를 등록한다. |
'Development > Software Engineering' 카테고리의 다른 글
수행 내용-배치 프로그램 테스트 하기 (0) | 2017.07.21 |
---|---|
정합성 검증 방법 (0) | 2017.07.21 |
수행 내용-서버 프로그램 테스트하기 (0) | 2017.07.21 |
디버깅 도구의 사용법, 디버깅(Debugging) 또는 디버그(Debug)의 개념, 디버깅 방법, 디버거(Debugger) (0) | 2017.07.21 |
수행 내용-서버 프로그램 작성하기 (0) | 2017.07.21 |