2011-02-09 77 views
4

學習 Grails的,我想包括我的應用程序運行時,每五秒鐘觸發一個經常性的任務,應該有我的域對象和這樣的訪問。在Grails中完成此操作的正確方法是什麼?將重複任務放在Grails應用程序中的位置?

我考慮在BootStrap.groovy開始一個Timer,但是會被丟棄並終止計時器。

回答

9

我從來沒有使用它,但Grails Quartz plugin應該讓你做你想做的。

+0

看起來不錯,謝謝。 – 2011-02-09 21:31:09

2

石英(http://grails.org/plugin/quartz)可以讓你在很多定義經常性任務的方式作爲cron任務將在一臺服務器上運行一樣。

您可以像這樣在你的項目安裝:

grails install-plugin quartz 

安裝完成後,您可以創建一個新的工作:

grails create-job 

然後你就可以安排它像這樣:

class MyJob { 
    static triggers = { 
    simple name: 'mySimpleTrigger', startDelay: 60000, repeatInterval: 1000 
    } 
    def group = "MyGroup" 
    def execute(){ 
    print "Job run!" 
    } 
} 

如果你喜歡CRON格式,你可以使用類似的格式安排你的觸發器:

static triggers = { 
    cron name: 'myTrigger', cronExpression: "0 0 6 * * ?" 
    } 

然而,由於Grails的應用程序可以在多臺服務器部署(QA,分期,部署,負載均衡器...)石英插件可以讓無論它是部署在哪臺服務器上運行的具體過程。

有一點要留意的是,服務器的時鐘同步 - 否則,你可以用一些奇怪的功能(尤其是如果多臺服務器共享相同的數據庫)結束。

相關問題