[java] Quartz Scheduler에서 작업 간 딜레이 설정하기

Quartz Scheduler 설정하기

먼저, Quartz Scheduler를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 다음 종속성을 추가합니다:

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

이제 Quartz Scheduler를 구성해 보겠습니다.

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzJob {
    
    public static void main(String[] args) {
        try {
            // 스케줄러 생성
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            
            // Job 생성
            JobDetail job = JobBuilder.newJob(MyJob.class)
                    .withIdentity("myJob", "group1")
                    .build();
            
            // Trigger 생성
            Trigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity("myTrigger", "group1")
                    .startNow()
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                            .withIntervalInSeconds(10) // 딜레이를 설정할 부분입니다.
                            .repeatForever())
                    .build();
            
            // Job과 Trigger 스케줄에 등록
            scheduler.scheduleJob(job, trigger);
            
            // 스케줄러 시작
            scheduler.start();
            
            // 일정 시간 실행을 유지한 후 스케줄러 중지
            Thread.sleep(60000);
            scheduler.shutdown();
            
        } catch (SchedulerException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

public class MyJob implements org.quartz.Job {

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 실행할 작업 내용을 작성합니다.
        System.out.println("Hello, Quartz!");
    }
}

위 코드에서 SimpleScheduleBuilder를 사용하여 withIntervalInSeconds() 메서드로 작업 간 딜레이를 설정할 수 있습니다. repeatForever()를 사용하면 작업을 반복적으로 실행할 수 있습니다.

결론

Quartz Scheduler를 사용하여 Java 애플리케이션에 작업 스케줄링을 구현할 수 있습니다. SimpleScheduleBuilder 클래스를 사용하여 작업 간 딜레이를 설정하면 주기적으로 작업을 실행할 수 있습니다. Quartz Scheduler의 다양한 기능을 활용하여 애플리케이션의 작업 스케줄링을 유연하게 관리할 수 있습니다.