Quartz Scheduler는 Java 애플리케이션에서 작업을 스케줄링하기 위한 강력한 라이브러리입니다. 이를 사용하면 주기적이거나 특정 시간에 작업을 실행할 수 있습니다. 하지만 때로는 작업 간에 데이터를 전달해야 할 때가 있습니다. 이번 블로그에서는 Quartz Scheduler를 사용하여 작업 간에 데이터를 전달하는 방법에 대해 알아보겠습니다.
JobDataMap을 사용한 데이터 전달
Quartz Scheduler에서 작업 간에 데이터를 전달하는 가장 간단한 방법은 JobDataMap
을 사용하는 것입니다. JobDataMap
은 JobExecutionContext
에 저장되며, 작업을 실행할 때마다 해당 데이터에 액세스할 수 있습니다.
다음은 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 공식 문서를 참조하시기 바랍니다.