如何在开始施药时避免石英启动

NiB*_*iBE 4 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 something...
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下一切正常,如果它不在生产中,则忽略触发器.现在问题很简单,如果我在生产中启动应用程序,一旦grails启动就会启动作业.我希望避免在应用程序启动时运行作业,但只有在cronExpression中正确设置时才会运行.

任何的想法?

更新:最后我把这行放在config.groovy中:

environments {
    development {
       grails.logging.jul.usebridge = true
       grails.plugin.quartz2.autoStartup = false
    }
    production {
      grails.logging.jul.usebridge = false
  }  
}
Run Code Online (Sandbox Code Playgroud)

现在似乎没有从引导开始我必须做更多的测试,我告诉你.

谢谢

UPDATE2:好了,现在计划根本没有开始,我期待它开始但不执行预定的作业,但是等待合适的时间来触发它.有帮助吗?

非常感谢

UPDATE3:抱歉,我觉得很蠢,在启动时添加简单的repeatCount:0 fire,所以删除它完美,再次对不起.

Geo*_*fin 5

通过设置conf\QuartzConfig.groovy,您可以控制作业执行自动启动的环境.例如:

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

environments {
    development {
        quartz {
            autoStartup = false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

jobs课堂上,您还可以设置startDelay触发器

static triggers = {
    cron name: 'myTrigger', startDelay: 5000, cronExpression: '0 15 2 * * ?'
}
Run Code Online (Sandbox Code Playgroud)