Grails应用程序中的Quartz作业被触发三次
我有Grails应用程序中的下一个Quartz工作。作业计算一些统计数据,并使用这些统计数据发送和发送电子邮件。我希望这项工作每天7点执行 我的问题是这项工作每天要做三次,而不是一次。Grails应用程序中的Quartz作业被触发三次,grails,quartz-scheduler,Grails,Quartz Scheduler,我有Grails应用程序中的下一个Quartz工作。作业计算一些统计数据,并使用这些统计数据发送和发送电子邮件。我希望这项工作每天7点执行 我的问题是这项工作每天要做三次,而不是一次。 class DailyEmailJob { def eventService static triggers = { cron name: 'emailTrigger', cronExpression: "0 0 7 * * ?" } def execute
class DailyEmailJob {
def eventService
static triggers = {
cron name: 'emailTrigger', cronExpression: "0 0 7 * * ?"
}
def execute() {
eventService.send24StatsEmail()
}
}
我在ApacheTomcat/7.0.35中托管Grails应用程序,运行Grails 2.2.1和quartz-1.0-RC6 每周或每月的某一天必须为“”,否则您将收到一个错误,因为基础库的支持尚未完成。因此,不能同时指定这两个字段,也不能将这两个字段都保留为all values通配符“*”;这与unix crontab规范不同 希望对编辑有所帮助 下面的分析在这种情况下并不适用。这只是一个基于原始误解事实的假设。如果得到建议,我可以删除答案 结束 我希望我能回答我在评论中提出的问题 “除上午7点外,它触发的次数是多少?” 是上午7点、下午2点和晚上9点吗 原因:
- 请参阅
插件[quartz-1.0-RC6]的版本,该插件使用quartz
。参考org.quartz调度程序:quartz:1.8.4
- 遵循相应响应中的
APICronExpression
“0 0 7**?”
导致作业在24小时(一天)内每7小时运行一次,导致作业在上午7点、(7+7)下午2点、(7+7+7)晚上9点运行
这是来自quartz scheduler.org
的最新文档,它的说法与此不同。请查看示例。同时研究“特殊字符/”
根据我在秒
和分钟
[我不想等待24小时进行测试:)]上的测试,我强烈认为下面的cronExpression
将正常工作,并在每天的7:00时触发execute()
:
回答:
“0 0 7/23**?”
[从每天的第7小时、第0分钟和第0秒开始,每24小时运行一次作业]
“0/23,7**?”
[与答案1同义,但不太详细。]
让我知道你的测试结果。我坚信这会起作用。我还将设置白天/晚上的调度程序,以便在24小时后测试结果(我不想为了获得清晰的结果而篡改JVM时钟,尽管我成功地进行了相同的篡改测试。)。将发布我的实际测试结果。你的cron表达式看起来不错。Tomcat的自动部署功能可能是罪魁祸首。有关一些建议,请参阅:你在哪里托管它?我遇到过类似的问题…应用程序是否只安装在一台应用程序服务器上?我正在VPS中的Rimuhosting.com中托管它。该应用程序刚刚安装在我n one TOMCAT很抱歉后续的时间太晚了。我唯一的理论是你可能有三个实例在运行。我在Heroku上部署了一个应用程序,有两个dynos,在我只有一个dynos之前,我只收到一封邮件。建议使用新的QUARTZ2插件…quartz 1插件已经过时,bogusIt不会在三个不同的时间触发。它7:00准时触发,几秒钟内触发三次cron表达式非常完美,根据您提到的文档进行检查,请不要误导。尝试使用grails quartz插件了吗?我添加了一个deployOnStartup=“false”autoDeploy=“false”“而今天它只触发了两次。可能是因为我在$CATALINA_HOME/webappsYes下有war和目录,这可以解释它。我相信这种行为还取决于应用程序的上下文的定义(即在server.xml
中,在conf\Catalina\localhost
下自己的.xml
文件中),在任何情况下,尝试将.war文件移出webapps;我相信这会有帮助。我也有同样的问题,我不确定这是否是原因。。我的工作总是触发三次。为什么不是两个或四个@塞尔吉奥德拉莫