【问题标题】:How to execute quartz scheduler every 3rd day from today如何从今天起每 3 天执行一次石英调度程序
【发布时间】:2019-01-30 07:53:09
【问题描述】:

我想从今天或用户选择的日期起每 2、3、4 ... 等天执行一次石英调度程序。 谁能帮助我,上述要求的 cron 表达式是什么?

【问题讨论】:

  • 真的。 format for cron expressions 有很好的文档记录。网络上还有大量的教程、示例和文档。为什么不简单地查找它们?
  • 感谢您的回复,但我访问了很多教程,但没有找到合适的解决方案
  • @Seelenvirtuose 你错了。更彻底地阅读这个问题。 从今天开始或用户选择的日期-部分非常棘手(无法解决?)。

标签: java cron quartz-scheduler


【解决方案1】:

cron 不支持“从今天开始”安排。它的设计目的是为了在重启后仍然有效,因此所有计划都必须是绝对的。

【讨论】:

  • 您的回答似乎很合乎逻辑。我试图用谷歌搜索它,但在这个主题上找不到任何东西(官方)。能不能给个链接?
  • 我没有链接支持它,只有常识。
【解决方案2】:

它每三天在 12 点触发..

0 0 12 1/3 * ? *

接下来的 5 个时间表是:

  1. 2019 年 1 月 31 日星期四下午 12:00
  2. 2019 年 2 月 1 日星期五下午 12:00
  3. 2019 年 2 月 4 日星期一下午 12:00
  4. 2019 年 2 月 7 日星期四下午 12:00
  5. 2019 年 2 月 10 日星期日下午 12:00

Make Custom cron expression

【讨论】:

  • 感谢@Khalid 这个 (0 0 12 1/3 * ? *) 表达式从每月的第一天开始执行,但我希望从今天开始每隔 3 天执行一次。例如,如果从今天开始,那么第一个 12 am 30/01/19、12 am 02/02/19 等
  • 表达式缺少从今天开始或用户选择的日期-部分。
  • 所以我们不能从石英调度器实现上述要求对吗?
【解决方案3】:

这就是你要找的东西吗:

CronScheduleBuilder scheduleBuilder = CronScheduleBuilder
          .cronSchedule(job.getCronExpression());

CronTrigger trigger = newTrigger()
.withIdentity(job.getTriggerName(),job.getTriggerGroup())
.startAt(job.getStartDate()) 
.withSchedule(scheduleBuilder).build();

scheduler.scheduleJob(jobDetail, trigger);

希望对您有所帮助!

【讨论】:

  • 这仅解决了开始日期问题。正如@talex 在他的回答中提到的那样(如果我的设置有误,请纠正我),cron 不支持 从第 x 天
  • 把它放在一个线程和trigger it daily 并把一个非重复的工作放在线程上?
猜你喜欢
  • 2014-03-12
  • 2011-06-25
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多