[java] Quartz Scheduler에서 작업 간의 데이터 전달하기

Quartz Scheduler는 Java 애플리케이션에서 작업을 스케줄링하기 위한 강력한 라이브러리입니다. 이를 사용하면 주기적이거나 특정 시간에 작업을 실행할 수 있습니다. 하지만 때로는 작업 간에 데이터를 전달해야 할 때가 있습니다. 이번 블로그에서는 Quartz Scheduler를 사용하여 작업 간에 데이터를 전달하는 방법에 대해 알아보겠습니다.

JobDataMap을 사용한 데이터 전달

Quartz Scheduler에서 작업 간에 데이터를 전달하는 가장 간단한 방법은 JobDataMap을 사용하는 것입니다. JobDataMapJobExecutionContext에 저장되며, 작업을 실행할 때마다 해당 데이터에 액세스할 수 있습니다.

다음은 JobDataMap을 사용하여 데이터를 전달하는 예제입니다.

import org.quartz.*;

public class MyJob implements Job {
    
    public void execute(JobExecutionContext context) throws JobExecutionException {
        JobDataMap dataMap = context.getJobDetail().getJobDataMap();
        
        // 데이터 가져오기
        String message = dataMap.getString("message");

        // 작업 실행
        
        // 작업 결과를 다음 작업에 전달하기 위해 데이터 설정
        dataMap.put("result", "작업 완료");
    }
}

위의 예제에서는 JobDataMap을 사용하여 메시지를 가져오고 작업을 실행한 후 결과를 설정합니다. 이렇게 설정된 데이터는 다음 작업에서 액세스할 수 있습니다.

JobExecutionContext를 통한 데이터 전달

JobDataMap을 사용하는 방법 이외에도 JobExecutionContext를 통해 작업 간에 데이터를 전달할 수 있습니다. JobExecutionContext는 작업 실행에 필요한 다양한 정보를 포함하고 있습니다.

다음은 JobExecutionContext를 사용하여 데이터를 전달하는 예제입니다.

import org.quartz.*;

public class MyJob implements Job {
    
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 데이터 가져오기
        String message = context.getMergedJobDataMap().getString("message");

        // 작업 실행
        
        // 작업 결과를 다음 작업에 전달하기 위해 데이터 설정
        context.setResult("작업 완료");
    }
}

위의 예제에서도 작업 실행 전에 데이터를 가져오고 작업 결과를 설정합니다. 데이터는 MergedJobDataMap을 통해 액세스할 수 있습니다.

결론

Quartz Scheduler를 사용하여 작업을 스케줄링하는 동안 작업 간에 데이터를 전달하는 방법을 살펴보았습니다. JobDataMap이나 JobExecutionContext을 사용하여 데이터를 전달할 수 있으며, 이를 통해 작업 간에 유용한 정보를 공유할 수 있습니다.

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