Grails 如何避免grail应用程序启动时启动quartz
我在GRAILS中有一个简单的应用程序,它使用Quartz2插件。 在作业文件中,我有:Grails 如何避免grail应用程序启动时启动quartz,grails,groovy,quartz-scheduler,Grails,Groovy,Quartz Scheduler,我在GRAILS中有一个简单的应用程序,它使用Quartz2插件。 在作业文件中,我有: static triggers = { simple repeatCount: 0 // execute job once in 5 seconds cron cronExpression: '0 15 2 * * ?' } def execute() { if (Environment.current == Environment.PRODUCTION) do s
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中正确设置时才运行作业
有什么想法吗
更新:
最后,我将这一行放在config.groovy中:
environments {
development {
grails.logging.jul.usebridge = true
grails.plugin.quartz2.autoStartup = false
}
production {
grails.logging.jul.usebridge = false
}
}
现在,它似乎不是从引导开始,我必须做一些测试更多,我让你知道
多谢各位
更新2:
好了,现在计划根本没有启动,我希望它会启动,但不执行计划的作业,而是等待正确的时间触发它。有什么帮助吗
非常感谢
更新3:
抱歉,但我觉得自己真的很愚蠢,添加简单的repeatCount:0在启动时触发一次,因此删除它使其工作正常,再次抱歉。通过设置
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 * * ?'
}
嗨,杰弗里芬,谢谢你的回答。我在配置下添加文件,复制并粘贴您的设置行,但什么也没有。当我启动grails应用程序时,我在execute()方法中放置了一个printline,我看到该行被打印出来,因此出于某种原因,即使我在开发环境中并将atuostartup设置为false,它仍然会运行。我使用的是Grails2.1和quartz2版本2.2。我看到有版本2.3,我将尝试更新和查看。再次感谢Just install version 2.3同样的问题:(如果您安装了Quartz Monitor(
grails安装插件Quartz Monitor
),然后您应该能够转到/quartz/list
,查看您配置了哪些作业以及quartz进程的状态。这可能类似于…http://your-server.your-company.com:your-port/your app/quartz/list
Hi Geo,我使用的是quartz2,quartzmonitor似乎只适用于quartz1