我學習 Grails的,我想包括我的應用程序運行時,每五秒鐘觸發一個經常性的任務,應該有我的域對象和這樣的訪問。在Grails中完成此操作的正確方法是什麼?將重複任務放在Grails應用程序中的位置?
我考慮在BootStrap.groovy
開始一個Timer,但是會被丟棄並終止計時器。
我學習 Grails的,我想包括我的應用程序運行時,每五秒鐘觸發一個經常性的任務,應該有我的域對象和這樣的訪問。在Grails中完成此操作的正確方法是什麼?將重複任務放在Grails應用程序中的位置?
我考慮在BootStrap.groovy
開始一個Timer,但是會被丟棄並終止計時器。
我從來沒有使用它,但Grails Quartz plugin應該讓你做你想做的。
石英(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,分期,部署,負載均衡器...)石英插件可以讓無論它是部署在哪臺服務器上運行的具體過程。
有一點要留意的是,服務器的時鐘同步 - 否則,你可以用一些奇怪的功能(尤其是如果多臺服務器共享相同的數據庫)結束。
看起來不錯,謝謝。 – 2011-02-09 21:31:09