【问题标题】:Quartz Scheduler: expression to configure the scheduler to execute in the alternative weeksQuartz Scheduler:配置调度程序在交替周执行的表达式
【发布时间】:2012-06-17 10:26:15
【问题描述】:

您能否提供表达式来配​​置调度程序以在替代星期日执行。

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

提前致谢。

【问题讨论】:

  • 你在说什么调度器?请准确地说,我们没有水晶球:)
  • 对不起..这是一个石英调度器
  • 另外,我尝试使用表达式“0 0 6 ? * 1#2,1#4”在第 2 和第 4 个星期日运行,但未能触发。

标签: java quartz-scheduler


【解决方案1】:

试试你的例子,

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 个星期日),另一个用于 2#4(第 4 个星期日)

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

【讨论】:

  • 感谢 Dahanne 的重播。但在我这边,没有任何例外。它在同一个月完美地运行了 2 周,但在更改月份后它没有被解雇。我找到了一个链接stackoverflow.com/questions/2819523/…。这与我的要求相似。但也没有解决办法。任何人都可以回答这个问题。
猜你喜欢
  • 2012-11-04
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多