[java] Quartz Scheduler에서 작업 간의 실행 우선순위 설정하기

Quartz Scheduler는 Java 기반의 오픈 소스 작업 스케줄링 라이브러리입니다. 이를 사용하여 일정한 주기로 작업을 반복하거나, 특정 시간에 작업을 실행할 수 있습니다. Quartz Scheduler에서 작업의 실행 우선순위를 설정하는 방법에 대해 알아보겠습니다.

작업 실행 우선순위 설정하기

Quartz Scheduler에서 작업의 실행 우선순위를 설정하려면 Trigger의 우선순위 속성을 이용해야 합니다. Trigger는 Quartz에서 작업 스케줄링을 관리하는 객체입니다. 각 Trigger에는 우선순위를 나타내는 정수값을 할당할 수 있습니다.

다음은 Quartz Scheduler에서 작업의 실행 우선순위를 설정하는 예시 코드입니다.

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class PriorityExample {
    public static void main(String[] args) throws SchedulerException {
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        
        JobDetail job1 = JobBuilder.newJob(Job1.class).build();
        JobDetail job2 = JobBuilder.newJob(Job2.class).build();
        
        Trigger trigger1 = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1")
                .withPriority(5) // 우선순위 설정
                .startNow()
                .build();
        Trigger trigger2 = TriggerBuilder.newTrigger()
                .withIdentity("trigger2", "group1")
                .withPriority(10) // 우선순위 설정
                .startNow()
                .build();
        
        scheduler.scheduleJob(job1, trigger1);
        scheduler.scheduleJob(job2, trigger2);
        
        scheduler.start();
    }
}

public class Job1 implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Job1 executed");
    }
}

public class Job2 implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Job2 executed");
    }
}

위의 예시 코드에서는 TriggerwithPriority 메소드를 통해 우선순위를 설정하였습니다. Trigger 객체를 생성하고 .withPriority(우선순위)를 호출하여 우선순위를 설정할 수 있습니다. 값이 더 큰 우선순위를 가진 작업이 더 높은 우선순위로 실행됩니다.

위의 코드에서는 “Job1”과 “Job2”라는 두 개의 작업을 생성하고, 각각의 Trigger에 우선순위를 설정하여 스케줄러에 등록하고 시작합니다.

결론

Quartz Scheduler에서 작업 간의 실행 우선순위를 설정하는 것은 간단합니다. Trigger의 우선순위 속성을 이용하여 작업의 우선순위를 조정할 수 있습니다. 이를 통해 작업들의 실행 순서를 조절하고 필요에 따라 높은 우선순위 작업을 먼저 실행하도록 할 수 있습니다.

참고 자료