Grails应用程序中的石英作业被触发三次
我在Grails应用程序中使用了下一个Quartz作业。这项工作计算一些统计数据,并发送这些统计数据并发送电子邮件。我希望这项工作每天7点执行。Grails应用程序中的石英作业被触发三次
我的问题是工作每天发生三次,而不是一次。
class DailyEmailJob {
def eventService
static triggers = {
cron name: 'emailTrigger', cronExpression: "0 0 7 * * ?"
}
def execute() {
eventService.send24StatsEmail()
}
}
我在主持的Apache Tomcat/7.0.35 Grails应用程序,运行的Grails 2.2.1和石英-1.0-RC6
您的cron表达式看起来不错。 Tomcat的自动部署功能可能是罪魁祸首。对于一些建议,请参阅:https://stackoverflow.com/a/11990221
我添加了一个deployOnStartup =“false” autoDeploy =“false”,今天它只触发两次。难道是因为我的战争和目录在$ CATALINA_HOME/webapps – 2013-04-29 09:38:40
下是的,这可以解释它。我相信这种行为还取决于你的应用程序的'Context'是如何定义的(例如,在'conf \ Catalina \ localhost'下的'.xml'文件中的'server.xml'?中)。无论如何,试着移动你的.war文件脱离webapps;我相信这会有所帮助。 – 2013-04-29 14:31:23
我有同样的问题,我不确定这是否是原因。我的工作总是触发*三次*。为什么不*两个*或*四个*? @SergiodelAmo – 2016-04-15 10:38:25
这就是文档说
要么Day- of-Week或Day-of-Month必须是“?”,否则由于底层库的支持不完整,您将会收到错误。所以你不能指定两个字段,也不能同时保留所有的值为通配符“*”;这是unix crontab规范的一个偏离。
希望帮助下面分析
编辑
的不不在这种情况下保持良好。这只是一个基于原始误解事实的假设。如果建议,我可以删除答案。
END
我希望我能回答我自己的问题,我问的评论。
“什么比早上7点触发其他都是时代?”
是否上午7点,14:00和9点?
原因是:
- 参见
quartz
插件[石英-1.0-RC6]它使用org.quartz-scheduler:quartz:1.8.4
的版本。请参阅BuildConfig.groovy from Github。 - 跟着
CronExpression
API来自corressponding Javadoc。
突出的重要措辞: -
“的 '/' 字符被用来指定增量例如 ”0/15“,在秒字段的意思是” 秒0,15, 30和45“,而秒数字段中的”5/15“表示”秒数5,20,35和50“。在'/'之前指定'*'等同于指定0是以基本上,对于表达式中的每个字段,都有一组可以打开或关闭的数字,对于秒和分钟,数字的范围是从0到59.对于0到23小时,对于月份的0到31和第1到12个月。“/”字符sim ply可以帮助您打开给定集合中的每个“第n个”值。因此,月份字段中的“7/6”仅以月份“7”开始,并不意味着每6个月,请注意微妙。“
在你的情况下,cron表达式:"0 0 7 * * ?"
结果在24小时(一天),导致在早上7点(7 + 7)下午2点,(7 + 7运行运行作业每7小时加7)晚上9点。
从quartz-scheduler.org
这个最新的文档,否则说。看一看例子here。还研究了“特殊字符/”。
基于我对seconds
和minutes
测试[我没有想等待24小时测试:)],我强烈认为下面的cronExpression
会起作用并触发execute()
正好7:00 Hrs
每天:
答:
-
"0 0 7/23 * * ?"
[运行作业每24小时开始在第7小时零分钟和一天中的第0秒] -
"0 0 0/23,7 * * ?"
[同义到答案1但较不详细。]
让我们知道你的测试结果。我坚信这会起作用。我也将设置调度程序为白天/夜晚,以便在24小时后测试结果(为了达到清晰的结果,我不想篡改JVM时钟,尽管我成功地测试了相同的篡改。) 。将发布我的实际测试结果。
它在三个不同的时间不会触发。它在7点触发在几秒钟内锐利三次 – 2013-04-29 09:35:52
cron表达式是完美的,根据您提到的文档进行检查,请勿误导。 试试http://www.cronmaker.com/ – Kartikya 2013-04-30 07:14:43
您是否使用过grails石英插件? – dmahapatro 2013-04-30 12:12:02
你在哪里托管它?我遇到过类似的问题... – marko 2013-04-08 07:00:23
该应用是否安装在一台应用服务器上? – 2013-04-08 12:38:39
我在Vim的Rimuhosting.com上托管它。该应用程序只安装在一个tomcat中 – 2013-04-09 07:06:51