【问题标题】:CRON: Run job on particular hoursCRON:在特定时间运行作业
【发布时间】:2015-11-24 04:45:24
【问题描述】:

我有一个 spring 批处理应用程序,我正在使用 CRON 来设置该应用程序的运行频率。但我遇到的问题是我想在特定时间运行这项工作

3 am
7 am
11 am
3 pm
7 pm
11 pm

如您所见,它是每 4 小时一次,但从凌晨 3 点开始,所以我不能在计时格式的小时部分中使用 */4,因为这将在凌晨 4 点开始工作

我也在小时部分尝试了'3,7,11,15,19,23',但这也不起作用(猜测它只在分钟部分有效)。有人知道我该怎么做吗?

【问题讨论】:

    标签: spring cron spring-batch


    【解决方案1】:

    使用

    @Scedule(cron="0 0 3/4 * * ?")
    

    模式x/y 表示:<timepart> mod y = x

    @Scedule(cron="0 0 3,7,11,15,19,21 * * ?")
    

    根据Quartz Cron Trigger Tutorial

    “/”字符可用于指定值的增量。为了 例如,如果您在 Minutes 字段中输入“0/15”,则表示“每 15 小时的分钟,从零分钟开始'。如果您在 Minutes 字段,这意味着“每小时的第 20 分钟, 从第三分钟开始 - 或者换句话说,它与 在 Minutes 字段中指定“3,23,43”。注意微妙之处 “/35”*不表示“每 35 分钟” - 表示“每 35 分钟” 小时,从零分钟开始” - 或者换句话说 指定“0,35”。

    【讨论】:

      【解决方案2】:

      0 0 3,7,11,15,19,23 * * ?

      每天凌晨 3 点开始,持续 0 分钟,下午 23:00 结束。

      【讨论】:

        【解决方案3】:

        从上面的两个答案来看,我犯的错误是我在工作的开始和结束时都保留了撇号......非常愚蠢

        我设法通过使用3-23/4 来解决这个问题,因为它从凌晨 3 点开始,然后每隔四个小时(只是其他答案的不同方式)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-05
          • 1970-01-01
          • 2014-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-08
          • 2019-05-23
          相关资源
          最近更新 更多