2012-11-19 21 views
1

我們的應用程序部署到負載均衡和冗餘2的Web服務器。我們有幾個Quartz工作每天運行一次。作業只需要在其中一個Web服務器上執行,而不是兩者都執行。最終,我們可能將這些作業的作業服務器,但現在,有沒有通過配置或環境變量或東西的方式,我可以這樣做的工作只是我的一臺服務器上運行?禁用石英工作(S)爲特定的服務器

回答

1

QuartzConfig.groovy您可以啓用或禁用插件的石英爲特定的環境。

environments { 
    runQuartz { 
     autoStartup = true 
    } 
    dontRunQuartz { 
     autoStartup = false 
    } 
} 

這樣一個方法是在你的Tomcat啓動參數使用-Dgrails.env=runQuartz-Dgrails.env=dontRunQuartz

一個可怕的黑客將有你的Quartz作業試圖鎖定一個共享的數據庫表 - 即獲得鎖纔可以執行作業,否則,中止。

我認爲第三種辦法是使用JDBC工作專賣店,雖然我有使用沒有經驗。在Quartz plugin docs簡短提及。

+0

那些看起來像一些有效的選項。尤其是作業商店,我在文檔中掩蓋了這一點。當我找到工作時我會在這裏更新。 – Gregg

+0

@Gregg曾經有過什麼工作? :-) – doelleri