Quartz Scheduler:表达式,用于配置调度程序在备用周内执行

时间:2012-06-15 09:21:08

标签: java quartz-scheduler

是否可以提供表达式来配​​置调度程序在其他星期日执行。

或者我尝试使用表达式0 0 6 ? * 1#2,1#4在第2和第4个星期日运行,但它无法触发

提前致谢。

1 个答案:

答案 0 :(得分:0)

试试你的例子,

JobDetail job = newJob(SimpleJob.class)
        .withIdentity("job1", "group1")
        .build();

CronTrigger trigger = newTrigger()
        .withIdentity("trigger1", "group1")
        .withSchedule(cronSchedule("0 0 6 ? * 1#2,1#4"))
        .build();

Date ft = sched.scheduleJob(job, trigger);
sched.start();

Date nextFireTime = trigger.getNextFireTime();
System.out.println(nextFireTime);

我遇到以下异常:

Exception in thread "main" java.lang.RuntimeException: 
CronExpression '0 0 6 ? * 1#2,1#4' is invalid,.
at org.quartz.CronScheduleBuilder.cronSchedule(CronScheduleBuilder.java:105)
at org.quartz.examples.example3.CronTriggerExample.run(CronTriggerExample.java:66)
at org.quartz.examples.example3.CronTriggerExample.main(CronTriggerExample.java:110)
Caused by: java.text.ParseException: Support for specifying multiple "nth" days is not imlemented.
at org.quartz.CronExpression.buildExpression(CronExpression.java:483)
at org.quartz.CronExpression.<init>(CronExpression.java:276)
at org.quartz.CronScheduleBuilder.cronSchedule(CronScheduleBuilder.java:102)
... 2 more

所以,它没有实现;是否修补Quartz以支持此用例,或者您可以使用2个不同的触发器,一个用于1#2(第二个星期日),另一个用于2#4(第四个星期日)

注意:我使用了最新的石英,2.2