[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을 스케줄링하기 위해 SchedulerFactoryScheduler 객체를 생성해야 합니다. 아래의 코드는 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의 공식 문서를 참고해보세요.

참고 자료