2016-07-29 2 views
2

У меня есть несколько заданий для запуска тремя триггерами (четыре задания для каждого триггера) Я хочу, чтобы одно задание всегда срабатывало всегда, всегда можно стрелять в случайном порядке. Должен ли я реализовать другой триггер? есть ли способ сделать что-то с приоритетами? я уже уволить их в одном потокеПланировщик заданий Quartz, как уволить задания в точном порядке

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool 
org.quartz.threadPool.threadCount = 1 

и

newTrigger().withSchedule(     
       CronScheduleBuilder.cronSchedule(exp)) 
       .withPriority(getPriorityForOperation(cronOperation)) 
       .build(); 

где приоритет для первой работы отличается от остальных, но в любом случае она работает в случайном порядке

ответ

2

Иногда, когда у вас есть много триггеров (или несколько рабочих потоков в вашем пуле потоков Quartz), Quartz может не иметь достаточного количества ресурсов, чтобы немедленно запустить все триггеры, которые планируется запустить одновременно. В этом случае вы можете захотеть контролировать, какой из ваших триггеров получает первую трещину в доступных рабочих потоках Quartz. С этой целью вы можете установить свойство приоритета в Trigger. Если одновременно запускаются триггеры N, но есть только рабочие потоки Z, доступные в настоящий момент, тогда сначала будут выполняться первые триггеры Z с наивысшим приоритетом. Если вы не устанавливаете приоритет в триггере, тогда он будет использовать приоритет по умолчанию 5. Для любого приоритета, положительного или отрицательного значения допускается любое целочисленное значение.

+0

спасибо за ур анвер. эти триггеры находятся в разное время, я имею в виду в 1:01 утра, в 2:01 утра и в 3:01. поэтому они не пересекают друг друга в одно и то же время. только порядок заказов в каждом событии триггера – koowalsky

+0

Итак, вы имеете в виду, что из этих 3, например, вы хотите, чтобы 3:01 нужно было уволить сначала, независимо от того, какие другие расписания? – Sirsendu

+0

нет нет, в каждом триггере есть 4 задания. «ежедневно, ежеквартально, ежеквартально, ежемесячно». Я хочу, чтобы ежедневная работа всегда была первой. – koowalsky

0

Я неправильно понял приоритеты в кварце. это для триггеров, а не для рабочих мест. к пожарной работе в указанном порядке, мы должны использовать

JobChainingJobListener chain; 
chain.addJobChainLink(dailyJob.getKey(), jobDetail.getKey()); 

где jobDetail находится в моем примере ежемесячно, квартальный и годовой. Благодарю вас за помощь.

Смежные вопросы