[java] Quartz Scheduler와 웹 서비스 연동하기
Quartz Scheduler는 자바 기반의 오픈 소스 라이브러리로, 다양한 시간 기반 작업을 스케줄링할 수 있습니다. 이번에는 Quartz Scheduler를 사용하여 웹 서비스를 연동하는 방법에 대해 알아보겠습니다.
1. Maven 종속성 추가
먼저, 프로젝트의 Maven 종속성에 Quartz Scheduler를 추가해야 합니다. pom.xml
파일에 다음과 같은 의존성을 추가해주세요.
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
2. Quartz Job 클래스 작성하기
Quartz Job은 실행될 작업을 정의하는 클래스입니다. 아래와 같이 MyWebServiceJob
이라는 Quartz Job 클래스를 작성해봅시다.
public class MyWebServiceJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
// 웹 서비스 호출 및 처리 로직을 작성합니다.
System.out.println("웹 서비스 호출을 시작합니다.");
// ...
System.out.println("웹 서비스 호출이 완료되었습니다.");
}
}
3. Quartz Job 스케줄링하기
Quartz Scheduler를 초기화하고 Job을 스케줄링하기 위해 SchedulerFactory
와 Scheduler
객체를 생성해야 합니다. 아래의 코드는 Quartz Scheduler를 초기화하고 5분마다 MyWebServiceJob
을 실행하는 예제입니다.
public class SchedulerExample {
public static void main(String[] args) {
try {
// 스케줄러 팩토리 생성
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
// Job 디테일 생성
JobDetail jobDetail = JobBuilder.newJob(MyWebServiceJob.class)
.withIdentity("myJob", "group1")
.build();
// 트리거 생성 (5분마다 실행)
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInMinutes(5)
.repeatForever())
.build();
// 스케줄러에 Job과 Trigger 등록
scheduler.scheduleJob(jobDetail, trigger);
// 스케줄러 시작
scheduler.start();
// 10초 동안 실행 대기
Thread.sleep(10000);
// 스케줄러 종료
scheduler.shutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
}
결론
Quartz Scheduler를 사용하면 웹 서비스와의 연동을 쉽게 구현할 수 있습니다. 이번에는 Maven을 사용하여 Quartz Scheduler의 종속성을 추가하고, Job 클래스를 작성하고, 스케줄링하는 방법에 대해 알아보았습니다. 추가적인 기능을 구현하기 위해서는 Quartz Scheduler의 공식 문서를 참고해보세요.