Запуск двух баз кода сталкивается с несколькими возможными проблемами, если существует задания изменены или задание создано (новый класс) в Quartz. Это мое лучшее предположение о том, что делать, на основе чтения документации, написания нескольких примеров и изучения stackoverflow. Будем признательны за любые советы.
- Для управления версией существующего задания необходимо вставить «minVersion» в JobData и повторно запустить задание. старого кластера достаточно?
JobDetail versionedJob = JobBuilder.newJob(ExistingJob.class)
.withIdentity("existingJob", "defaultGroup")
.usingJobData("minVersion", 2) // Changed job to 2
.build();
// All "versioned" jobs have this logic
public class ExistingJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
int minVersion = jobDataMap.getInt("minVersion");
if (currentVersion < minVersion ) {
JobExecutionException e = new JobExecutionException("Job execution stopped (incorrect version)");
e.setRefireImmediately(true);
throw e;
}
...
}
}
- Для совершенно нового задания (класса) в новой базе кода добавлена обработка пропусков зажигания в достаточно хороший триггер, чтобы позволить новому кластеру в конечном итоге его подхватить?
.withIdentity("newJobTrigger", "defaultGroup")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(15)
.repeatForever()
.withMisfireHandlingInstructionNextWithExistingCount())
.build();
Подробнее здесь: https://stackoverflow.com/questions/790 ... loyed-live