2012-10-03 34 views
3

我有必須在羣集模式下運行的作業以及需要在每個節點中運行的作業。我需要非集羣作業也是持久的,因此我創建了兩個調度程序,一個以集羣模式運行,另一個以非集羣模式運行,都使用與作業存儲相同的一組石英錶。這個設計有什麼問題嗎?我從Quartz配置參考(http://quartz-scheduler.org/documentation/quartz-2.1.x/configuration/ConfigJDBCJobStoreClustering)中看到以下語句關於對羣集和非羣集調度程序使用同一組石英錶

從不啓動(scheduler.start())非羣集實例針對任何其他實例正在運行(start()ed)的同一組數據庫表。您可能會收到嚴重的數據損壞,並且肯定會遇到不穩定的行爲 但是沒有任何解釋,我不清楚它是否真的有意義。如果沒有創建另一組石英錶,是否有其他選擇。

回答

5

如果您啓動具有不同名稱的兩個調度程序,則可以毫無問題地重複使用相同的表。作業,觸發器和所有其他Quartz實體由包含調度程序名稱的複合主鍵標識。這意味着集羣調度程序使用不同的記錄子集,並且不會觸及非集羣記錄。

另一個解決方案是使用不同的表集。 Qurtz允許您在調度程序的基礎上定義表格前綴。

該文檔的評論是關於具有相同調度程序名稱的兩個非羣集應用程序使用相同數據庫的情況。然後他們會嚴重打斷對方並導致各種問題。

+0

這正是我期待的說明! –

+0

@TomaszNurkiewicz:這是否意味着如果我們有兩個應用程序以非集羣模式運行,並且不同的調度程序名稱不會導致任何衝突。有時候,我們正在使用Quartz 1.8.3這種類型的方案。在預定時間內,任何隨機如果調度程序不是啓動它的調度程序,那麼調度程序會失敗 – Rips

+0

@Rips:我從來沒有測試過這樣的配置,但它應該像我描述的那樣工作(我正在談論Quartz 2.x) –