2012-03-12 62 views
0

我和Spring一起使用Quartz。我使用的JobStore是RAMJobStore。Quartz scheduler - 是否可以將Quartz配置爲允許在RAMJobStore中具有相同標識的作業?

我創建了幾個具有相同標識的作業(它們具有相同的實例定義(JobDetail))。因爲我想確保這些作業不是並行執行的,所以我用@DisallowConcurrentExecution註釋了他們的作業類。

我的問題是,RAMJobStore不允許用在店裏同一時間同一識別多個作業,所以當我嘗試添加工作,我得到異常:

org.quartz.ObjectAlreadyExistsException: Unable to store Job : 
    'jobX', because one already exists with this identification. 

你對我如何克服這個問題有任何想法嗎?

非常感謝!

回答

0

從RAMJobStore源代碼可以清楚地看出,在RAMJobStore中不能有兩個具有相同鍵的作業。

看看here在源代碼。

1

如果你有兩個不同的作業在兩個不同的觸發器上運行,那麼我不知道任何Quartz註釋會阻止兩個作業並行運行。您可以在每個作業中引用Scheduler實例,以確定其他作業是否正在執行。然後,您可以暫停或重新安排作業,以防止它們並行運行。

相關問題