2015-10-20 36 views
0

有沒有人試過在多臺機器上運行應用程序的同時啓動Quartz Job應用程序?Quartz集羣作業 - 多臺主機 - 並行啓動

我在我的應用程序中創建了Quartz Clustered作業,它在多臺機器上運行。 當我啓動應用程序時,Quartz工作正常,依次在所有主機中。但是,當我並行啓動應用程序時,出現了幾種不同的錯誤。

如:

  1. 的就業登記和觸發器失敗:空 org.quartz.ObjectAlreadyExistsException:無法觸發存儲與名稱:「triggerName」和組:「JOB_GROUP」,因爲一個已經存在這種識別

  2. ORA-02292:完整性約束(QUARTZ_CRON_TRIG_TO_TRIG_FK)違反 - 子記錄發現

有沒有人遇到過這個問題,並得到解決? 你能分享一下你對這個話題的想法嗎?

回答

0

這個問題來了,因爲我創建了具有以下屬性的SchedulerFactoryBean。

- SchedulerFactoryBean.setOverwirteExistingJobs(true)

雖然開始並行所有實例,所有實例試圖刪除Quartz_JOB_DETAILS和Quartz_TRIGGERS表值。以上述錯誤結束。

但是,一旦我使用默認值「overwriteExisitingJobs爲false」。這個問題已經消失。

我唯一面臨的問題是,每當我更改cron觸發器值時,我都從數據庫中刪除了JOB信息,並且它將在啓動第一個調度程序實例時新創建。

delete from QRTZ_CRON_TRIGGERS; 
delete from QRTZ_TRIGGERS; 
delete from QRTZ_JOB_DETAILS; 
delete from QRTZ_LOCKS; 
commit; 
相關問題