2016-07-29 148 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是在我的例子月度,季度和年度。 感謝您的幫助。