2009-11-22 44 views
2

我有幾個網絡服務器,需要他們使用Quartz。 Quartz的羣集功能將是理想的,但它要求服務器時鐘完全同步。他們對此有一個非常可怕的警告:我可以在沒有啓用羣集的情況下將新作業注入Quartz JDBCJobStore嗎?

切勿單獨的機器上運行羣集,除非它們的時鐘正在使用某種形式的非常有規律運行時間同步服務(守護進程)的同步(時鐘必須在一秒鐘內彼此的)。

我不能保證完整的時鐘同步,所以我沒有使用羣集功能,而是想要有一個Quartz實例(帶有用於故障切換的備用)。讓一個實例執行作業不成問題,但我仍然需要所有Web服務器都能夠安排作業。

我可以直接從Web服務器將作業添加到JDBCJobStore,它們會被(非集羣)Quartz服務器拾取嗎?我將通過在Web服務器中創建計劃實例來添加作業。這些實例永遠不會啓動,只用於訪問JobStore。

回答

2

寫了一個測試程序,該程序使用與「真實」調度程序(也是非羣集)相同的JobStore創建「非羣集」Quartz調度程序,並安排作業。幾秒鐘後,這些工作確實得到執行,所以它似乎工作。

更新:我交叉發表這個問題到石英論壇,和got the answer that this should work。在一個related question他們指出

的作業可以通過其它處理而被插入到該數據庫:

1-使用石英的RMI特徵與其他工序,和使用該石英API

2)在另一個進程(例如webapp)中實例化一個調度器,並將它指向同一個數據庫,但不啓動該調度器實例,並使用quartz api來調度作業。

+0

這是否意味着當您有一個jobstore時,所有Quartz調度程序之間將共享所有作業?我找不到任何有關作業實際使用的文檔。 – Richard 2010-05-17 12:45:37

相關問題