Какую инструкцию о пропусках зажигания мне нужно установить для ImmediateTrigger?
Я хочу выполнять только 5 заданий одновременно. И если задание не может быть запущено из-за отсутствия свободных потоков, я хочу, чтобы оно началось, когда появится свободный поток, и только один раз. Это мой код:
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory("quartz.properties");
sched = schedFact.getScheduler();
sched.start();
String jobName = generateJobDetailName();
JobDetail jobDetail = new JobDetail(jobName, GRP_Immediate, MyJob.class);
jobDetail.getJobDataMap().put(MyJob.DATA, data);
Trigger trigger = TriggerUtils.makeImmediateTrigger(0, 0);
trigger.setName(jobName + "_Simpletrigger");
sched.scheduleJob(jobDetail, trigger);
А это мой quartz.properties
файл:
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
Но есть кое-что, чего я не могу понять. Какого рода misfire instruction
Мне нужно установить для требуемого поведения?
1 ответ
Решение
Вы должны использовать SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW
(обратите внимание, что ваш триггер - SimpleTrigger):
trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
так как у вас есть триггер "один выстрел", который должен быть выполнен точно как можно раньше.