【问题标题】:Quartz does not run the jobs, when the winter time change occurs当冬季时间发生变化时,Quartz 不会运行作业
【发布时间】:2016-12-15 15:54:12
【问题描述】:

在我们的系统中,有多个石英 (quartz 2.2.2) 计划和作业,它们与这些计划相关联。

发生冬季时间更改 (DST) 时会出现此问题。冬季时间更改将时间设置回凌晨 03:00(柏林)的凌晨 02:00。

这意味着当晚有 2 次 02:00 am 小时。但是,quartz api 不支持夏令时。它跳过凌晨 2 点,并在凌晨 03:00 继续。他们在documentation 中说,处理它。

01:00 am - 正常工作
02:00 am - 跳过
02:00 am - 正常工作
03:00 am - 正常工作

在我们的系统中,我们没有机会将计时器设置为另一个时间,并且必须触发作业。

我已经阅读了互联网上几乎所有的答案,但没有找到适合这个问题的解决方案。最合乎逻辑的答案(ron 的答案)是 this 但是,我不能扩展 CronExpression 类,这是最终的。可能在以前的版本中它不是最终版本。

优雅与否,我正在等待(并感谢)所有可能的答案。

【问题讨论】:

    标签: java cron quartz-scheduler


    【解决方案1】:

    我已经用自己的混合解决方案解决了这个问题。

    主要是在完成作业的类(实现Job接口的类)中,我一直检查下一次何时触发该作业。如果是在 10 月的最后一个星期日凌晨 02:00(冬季变化发生在 10 月的最后一个星期日),我用一个简单的触发器重新安排工作(不受夏令时变化的影响),并且序列化原始触发器,凌晨 03:00 后,我使用原始 cron 触发器再次重新安排作业。

    我知道这不是理想的解决方案,但我认为这是解决此问题的最佳解决方案之一。

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 2022-08-10
      • 2015-09-14
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多