2012-09-24 84 views
4

我在使用Quartz2插件的GRAILS中有一個簡單的應用程序。 在作業文件我有:如何避免啓動聖盃啓動石英開始

static triggers = { 
    simple repeatCount: 0 // execute job once in 5 seconds 
    cron cronExpression: '0 15 2 * * ?' 
} 

def execute() { 
    if (Environment.current == Environment.PRODUCTION) 
     do something... 
} 

一切正常,在這種情況下,如果它不是在生產中觸發被忽略。 現在問題很簡單,如果我在生產中啓動應用程序,那麼在grails啓動後立即開始工作。我希望避免應用程序啓動時儘快運行,但只有在cronExpression中正確設置時纔會運行。

有什麼想法?

UPDATE: 在我把這個線Config.groovy中底:

environments { 
    development { 
     grails.logging.jul.usebridge = true 
     grails.plugin.quartz2.autoStartup = false 
    } 
    production { 
     grails.logging.jul.usebridge = false 
    } 
} 

現在看來不是在引導我做了幾個測試更多的開始,我讓你知道。

謝謝

UPDATE2: 現在好了時間表沒有啓動可言,我期待它開始,但不執行調度的工作,但等待合適的時機來觸發它。任何幫助?

非常感謝

UPDATE3: 很抱歉,但我覺得自己很愚蠢,添加簡單的repeatCount:0火一旦在啓動時,所以刪除它的作品完美,對不起一次。

回答

5

通過設置conf\QuartzConfig.groovy,您可以控制自動啓動作業的環境。例如:

quartz { 
    autoStartup = true 
    jdbcStore = false 
    waitForJobsToCompleteOnShutdown = true 
} 

environments { 
    development { 
     quartz { 
      autoStartup = false 
     } 
    } 
} 

在你jobs類,你還可以設置startDelay您觸發

static triggers = { 
    cron name: 'myTrigger', startDelay: 5000, cronExpression: '0 15 2 * * ?' 
} 
+0

GeoGriffin嗨,感謝宇的回答。我在配置下添加文件,並複製並粘貼您的設置行,但沒有任何內容。當我啓動grails應用程序時,我將printline放在execute()方法中,因爲某些原因,我看到了打印行,即使我處於開發環境並將atuostartup設置爲false,它仍然會運行。我正在使用Grails 2.1和quartz2 2.2版本。我看到有2.3版本,我會嘗試更新並查看。再次感謝 – NiBE

+0

只需安裝版本2.3同樣的問題:( – NiBE

+0

如果你安裝了Quartz Monitor('grails install-plugin quartz-monitor'),那麼你應該可以到'/ quartz/list'去查看你的工作已配置和Quartz進程的狀態。 – GeoGriffin