![](/img/trans.png)
[英]Why is my quartz job not getting triggered according to given cron expression, instead firing every 10 minutes?
[英]Quartz cron expression to run job at every 14 minutes from now
我现在想每隔14分钟办一次工作。
例如,如果我在上午11:04安排工作,使用0 0/14 * * * ?
cron表达式。 那么预期的起火时间应该是11:18,11:32,11:46等等。 但会在11:00,11:14:11,28:11:42,11:56,12:00触发 以及为什么它在11:56之后的12:00时触发,所以仅差4分钟。
提前致谢。
您的cron表情应该看起来像
0 0/14 * 1/1 * ? *
一个有疑问的网站,可用来创建您的cron表达式: http : //www.cronmaker.com/
它会帮助您建立cron表达式,并向您显示cron的下一个触发日期时间。
有关更多参考: http : //www.nncron.ru/help/ZH/working/cron-format.htm
好吧,0/14给您发射时间分别为00、14、28、42、56,以及每小时的00分钟。 因此,最后间隔不是14分钟而是4分钟。 那就是cron的工作方式。 仅当间隔除以60的余数为零时,才能获得以分钟为单位的均等间隔。
你弄错了。 0/14
表示它将在14min
后从0
开始每小时触发一次。 这就是为什么它在12.00
开火
“ 0 0/14 * * *?” 表示从时钟开始每隔14分钟的下一次触发时间,如您所说。
第一个“ 0”表示第二个时钟为0(或12)。 与第二个“ 0”相同,表示时钟的分钟数为0(或12); “ / 14”表示间隔为14分钟。
因此,从当前时间获取SECOND和MINUTE并将它们与时间间隔连接成cron表达式,然后将其触发。 以下是Java的示例:
public static String getCronExpressionFromNowWithSchedule(int minuteInterval) throws Exception {
String cronExpression = "";
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH); // Note: zero based!
int day = now.get(Calendar.DAY_OF_MONTH);
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int second = now.get(Calendar.SECOND);
int millis = now.get(Calendar.MILLISECOND);
if (minuteInterval<=0) cronExpression = (second+1)+" * * * * ?";
else cronExpression = (second+1)+" "+minute+"/"+minuteInterval+" * * * ?";
System.out.println(cronExpression);
return cronExpression;
}
在您传入此方法的“分钟”间隔中,下一个触发时间是从当前时间开始的下一秒。
您应该将cron
表达式更改为0 0/14 * 1/1 * ? *
0 0/14 * 1/1 * ? *
使用此cron表达式。
0 0/14 * *
*?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.