如何在前一个或下一个工作日运行Quartz Scheduler

问题描述 投票:1回答:1

In this article解释了如何排除Quartz在特定日历日运行,但我需要的是不同的东西,我需要在上一个或下一个工作日运行作业,如果触发日历在假日结果。

例如,假设作业计划每月运行,包括2019年3月29日星期五,即假日。

这意味着:

  • 不是假日:2019年3月28日星期四(如果工作在节假日之前运行,应该运行)
  • 假日:2019年3月29日星期五
  • 假日:2019年3月30日星期六
  • 假日:2019年3月31日星期日
  • 不是假日:2019年4月1日星期一(如果假期结束后工作应该开始)

实现这一目标的一种方法是每天运行工作并分析它是否应该在当天运行,并在必要时重新触发,但有更好的方法吗?

UPDATE

如果我每天必须触发这项工作,为什么不使用Java EE 8 TimerService呢?

java java-ee quartz-scheduler
1个回答
0
投票

我建议在每个工作日运行它,例如使用Cron Expression(每个工作日下午5点运行)

0 00 17 * * MON-FRI

在由Cron表达式调用的函数内部,您可以调用holidayService.isHoliday(date)来判断日期是否为假日。如果是假日,那么您可以跳过运行报告。

© www.soinside.com 2019 - 2024. All rights reserved.