【问题标题】:Cron expression to poll file after every 30 mins between 10pm to 1am is not working在晚上 10 点到凌晨 1 点之间每 30 分钟轮询文件的 Cron 表达式不起作用
【发布时间】:2019-03-01 00:24:16
【问题描述】:

这是我的 cron 表达式 -

0 0,30 22-23,0-1 * * ?

我想从每天晚上 10 点到凌晨 1 点每 30 分钟读取一次文件。这意味着它应该在晚上 10 点、10.30 点、11 点、11.30 点、12 点、12.30 点、1 点读取文件。

但上面的表达式是在 1.30am 读取文件,这也是我不想要的。 它应该不包括上午 1.30 的时间。

我在这里做错了吗?谁能建议我上述表达式中有用的更改或问题? 提前致谢!

【问题讨论】:

    标签: cron mule


    【解决方案1】:

    运行超过 01 小时限制的问题是由于作业在 :00 和 :30 运行。此限制将需要 2 个单独的 cron 作业。一个在 :00 分钟运行,一个在 :30 运行。这是为了使 00-01 小时限制阻止作业在凌晨 1:30 运行。

    00 分钟第一份工作:

    0 0 22-23,0-1 * * ?
    //At second :00, at minute :00, 
    //every hour between 22pm and 23pm every hour between 00am and 01am, of every day
    

    第二个作业在 :30 分钟,最高小时限制设置为 00 而不是 01

    0 30 22-23,0 * * ?
    //At second :00, at minute :30, at 00am, 
    //and every hour between 22pm and 23pm, of every day
    

    以下是两个作业的运行时示例:

    1st job:
    Thu Feb 28 22:00:00 UTC 2019
    Thu Feb 28 23:00:00 UTC 2019
    Fri Mar 01 00:00:00 UTC 2019
    Fri Mar 01 01:00:00 UTC 2019
    
    2nd job:
    Thu Feb 28 22:30:00 UTC 2019
    Thu Feb 28 23:30:00 UTC 2019
    Fri Mar 01 00:30:00 UTC 2019
    

    Cron formatter 网站是玩弄 Cron 语句的一个很好的资源,它可以让您输入语句,然后为您提供语句将遵循的简单英语逻辑。它还显示语句的哪些部分解析为分钟、小时、天等。在我看来,这对创建新语句非常有帮助。

    【讨论】:

    • 我猜这实际上不会在凌晨 1 点触发?
    • 哦,是的,我没有注意到这个要求。你说的对。我会更新的。
    • 实际上,我发现我也错过了午夜和凌晨 1 点。另外,这将在您想要避免的 1:30 运行。这将需要 2 个单独的 cron 作业。我会更新的。
    • 好的,更新应该最终满足您的所有要求。使用两个 Cron 作业,您可以将 30 分钟的运行时间限制为超过凌晨 1 点的限制。
    • 由于必须在 Poll mule 组件中使用表达式,我不能同时使用两个作业。但我真的很感谢你的帮助。谢谢!
    【解决方案2】:

    您当前的 cron 表达式应在上午 1:30 触发,因为它包含小时 1,分钟为 0,30。

    您可以使用两个 cron 表达式来完成此操作:

    https://stackoverflow.com/a/21274226/10441990

    或者你可以使用表达式过滤器:

    https://stackoverflow.com/a/54692465/10441990

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      相关资源
      最近更新 更多