Какую инструкцию о пропусках зажигания мне нужно установить для 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);

так как у вас есть триггер "один выстрел", который должен быть выполнен точно как можно раньше.

Другие вопросы по тегам