스케줄링을 통해 실행될 작업을 정의하는 인터페이스로 execute() 메소드로 실제 구현을 정의한다.
public class TaskJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
}
}
Job 인스턴스가 실행할 때 사용할 수 있게 원하는 정보를 담을 수 있는 객체이다.
JobDataMap jobDataMap = jobDetail.getJobDataMap();
jobDataMap.put("P_JOB_NM", jobName);
jobDataMap.put("P_TRIGGER_NM", triggerName);
job의 인스턴스에 대한 세부 정보를 유지한다.
JobDetail jobDetail = JobBuilder.newJob(TaskJob.class).withIdentity("").build();
작업이 실행되는 주기(반복 횟수, 시작 시간 등...)를 결정하며 SimpleTrigger, Crontrigger 등 여러 트리거가 있다.
private Trigger buildTrigger(String postId, LocalDateTime postTime) {
return TriggerBuilder.newTrigger()
.withIdentity("")
.startAt(triggerStartTime)
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInHours(24 * 365).withRepeatCount(1))
.build();
}
job과 trigger를 사용하여 실제 작업 스케줄링을 한다.
scheduler.scheduleJob(jobDetail, trigger);
🔗 https://mvnrepository.com/artifact/org.quartz-scheduler/quartz