[java] Quartz Scheduler의 작업 실행 상태 모니터링

Quartz Scheduler는 자바 애플리케이션에서 스케줄링된 작업을 관리하고 실행하는 데 사용되는 오픈 소스 라이브러리입니다. 작업이 예약된 시간에 실행되는지 확인하고, 실행 상태를 모니터링하는 것은 중요합니다. 이번 포스트에서는 Quartz Scheduler의 작업 실행 상태를 모니터링하는 방법에 대해 알아보겠습니다.

스케줄된 작업 상태 확인

Quartz Scheduler에서 실행 중인 작업의 상태를 확인하려면 아래의 코드를 사용할 수 있습니다.

Scheduler scheduler = new StdSchedulerFactory().getScheduler();
JobKey jobKey = new JobKey("jobName", "groupName");
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
List<Trigger> triggers = (List<Trigger>) scheduler.getTriggersOfJob(jobKey);

if (jobDetail != null && triggers != null) {
    TriggerState triggerState = scheduler.getTriggerState(triggers.get(0).getKey());
    System.out.println("작업 이름: " + jobKey.getName());
    System.out.println("작업 그룹: " + jobKey.getGroup());
    System.out.println("상태: " + triggerState);
} else {
    System.out.println("작업이 없거나 실행 중이 아닙니다.");
}

위의 코드에서 “jobName” 및 “groupName”은 작업의 고유 이름과 그룹 이름으로 대체되어야 합니다.

작업 실행 상태 모니터링

Quartz Scheduler는 작업을 실행하는 동안 다양한 상태를 가질 수 있습니다. 이러한 상태를 코드에서 모니터링하려면 다음의 JobListener 클래스를 작성하고 등록해야 합니다.

public class CustomJobListener implements JobListener {

    @Override
    public String getName() {
        return "CustomJobListener";
    }

    @Override
    public void jobToBeExecuted(JobExecutionContext context) {
        System.out.println("작업이 실행되기 전입니다.");
    }

    @Override
    public void jobExecutionVetoed(JobExecutionContext context) {
        System.out.println("작업 실행이 거부되었습니다.");
    }

    @Override
    public void jobWasExecuted(JobExecutionContext context, JobExecutionException exception) {
        System.out.println("작업이 실행되었습니다.");
    }
}

위의 예제에서는 jobToBeExecuted, jobExecutionVetoed, jobWasExecuted 메서드를 구현하여 작업의 실행 여부에 따라 알림을 출력합니다.

작업 모니터링을 활성화하려면 Quartz Scheduler에 CustomJobListener를 등록해야 합니다.

Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.getListenerManager().addJobListener(new CustomJobListener());

결론

Quartz Scheduler를 사용하면 작업의 실행 상태를 모니터링하고, 필요에 따라 작업이 실행되기 전, 실행 거부, 실행 후에 알림을 받을 수 있습니다. 이를 통해 애플리케이션의 작업 스케줄링을 효율적으로 관리할 수 있습니다.

더 자세한 내용은 Quartz Scheduler 공식 문서를 참조하시기 바랍니다.