[java] Quartz Scheduler의 실행 지연 설정하기

Quartz Scheduler는 Java 애플리케이션에서 전체적인 작업 스케줄링을 담당하는 강력한 라이브러리입니다. 이 라이브러리를 사용하면 정해진 시간에 작업을 실행하거나 주기적으로 작업을 실행하는 등의 작업 스케줄링을 손쉽게 구현할 수 있습니다.

그 중에서도 특정 작업을 실행하기 전에 지정된 시간 동안 대기하는 실행 지연 설정에 대해서 알아보겠습니다.

1. Quartz 라이브러리 추가하기

먼저, Maven이나 Gradle과 같은 빌드 도구를 사용하여 프로젝트에 Quartz 라이브러리를 추가해야 합니다. 아래는 Maven을 사용한 예시입니다.

<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>2.3.2</version>
</dependency>

2. Job 및 Trigger 생성하기

실행 지연을 적용할 Job과 Trigger를 생성해야 합니다. Job은 실행될 작업을 정의하고, Trigger는 Job이 언제 실행될지를 정의합니다.

import org.quartz.*;

public class MyJob implements Job {
    
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 실행될 작업 내용을 구현합니다.
    }
}

public class Main {
    
    public static void main(String[] args) throws SchedulerException {
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        
        // Job 생성
        JobDetail job = JobBuilder.newJob(MyJob.class)
                .withIdentity("job1", "group1")
                .build();
        
        // Trigger 생성
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1")
                .startAt(DateBuilder.futureDate(5, DateBuilder.IntervalUnit.SECOND)) // 5초 후에 실행
                .build();
        
        // Scheduler에 Job과 Trigger 등록
        scheduler.scheduleJob(job, trigger);
        
        // Scheduler 시작
        scheduler.start();
    }
}

위 코드에서 startAt(DateBuilder.futureDate(5, DateBuilder.IntervalUnit.SECOND)) 부분은 5초 후에 Job을 실행하도록 Trigger에 실행 지연을 설정하는 부분입니다.

3. 실행 지연 테스트

실행 지연 설정이 제대로 동작하는지 확인하기 위해 간단한 테스트를 해보겠습니다.

실행 지연 설정을 적용한 후, 애플리케이션을 실행하면 5초 후에 MyJob 클래스의 execute() 메서드가 호출되어 작업이 실행됩니다.

추가적인 실행 지연 설정을 테스트하려면 startAt() 메서드의 인자를 변경하여 원하는 시간으로 설정하면 됩니다.

참고 자료