2016-07-29 117 views
2

消防工作,我有一些工作由三个触发器(四份工作的每一个触发器) 火,我想一个指定的作业总是先大火,其余的可以开火随机顺序。 我应该实现不同的触发器?有没有办法做一些优先事项?我已经解雇他们在一个线程石英作业调度程序如何在正确的顺序

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工作线程中进行破解。为此,您可以在触发器上设置优先级属性。如果N个触发器同时触发,但当前只有Z个工作线程可用,则首先执行具有最高优先级的第一个Z触发器。如果您没有在触发器上设置优先级,那么它将使用默认优先级5.任何整数值都允许优先级为正数或负数。

+0

感谢您UR前面回答。这些触发器在不同的时间,我的意思是凌晨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是在我的例子月度,季度和年度。 感谢您的帮助。