【问题标题】:Quartz Cron Expression: Run Job Every 10 minutes starting NOW (immediately)Quartz Cron 表达式:从现在开始每 10 分钟运行一次作业(立即)
【发布时间】:2011-03-27 04:38:17
【问题描述】:

我正在使用 Spring 使用 Quartz 调度程序。我想使用以下时间表进行相同的配置:

从现在开始每 10 分钟运行一次作业

我正在使用以下表达式。

0 */10 * * * ?

我认为分钟字段中的 * 会使其在第一分钟运行,但事实并非如此。它从现在开始的前 10 分钟运行一次,之后每隔 10 分钟运行一次。 任何人都可以建议我这种行为的原因以及我的问题的解决方案吗?

【问题讨论】:

    标签: cron


    【解决方案1】:
    0 0/10 * 1/1 * ? *
    

    请看:http://www.cronmaker.com/

    【讨论】:

      【解决方案2】:

      检查您现在的时间并将它们作为列表添加到您的 crontrigger。如果您在第 12 分钟启动触发器,例如添加

      0 2,12,22,32,42,52 * * * ? 
      

      作为你的 cron 表达式

      编辑:

      另一种解决方案是定义一个每十分钟重复一次的简单触发器

      SimpleTrigger trigger = new SimpleTrigger("myTrigger",
                                                  null,
                                                  new Date(),
                                                  null,
                                                  SimpleTrigger.REPEAT_INDEFINITELY,
                                                  10L * 60L * 1000L);
      

      【讨论】:

      • 谢谢这会起作用,但那不是很聪明,不是吗。我正在处理 onstartup 需要启动 CronJob 的大型应用程序。我不想每次启动我的应用程序时都更改 cron 表达式。请问我们有其他解决方案吗?
      • 我担心智能版本无法通过 spring 配置。
      • 你可以在你的方法前添加@PostContruct,这样你的bean初始化后,它会第一次运行。
      【解决方案3】:

      你可以使用类似的东西

      0 1-59/10 * * * ?
      

      这将在任何一分钟和之后的 10 分钟触发作业。我没试过,但看起来不错。 :)

      【讨论】:

      • 你拯救了一天。
      【解决方案4】:
      */10 * * * *
      

      从您创建 cron 作业的那一刻开始,每 10 分钟一次,无论您喜欢什么(用户 crontab、/etc/cron.d/、...)。

      【讨论】:

      • 在石英中,crons 可以每秒运行一次。您的解决方案将以石英 cron 调度语法每 10 秒运行一次。当我有一份要测试每分钟运行的工作时,这让我大吃一惊,所以我使用了 gnu 的 cron 语法(如上所示),实际上它每分钟每秒都在运行。呃……谈谈并发测试……
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 2018-06-04
      • 2017-10-15
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2012-11-02
      相关资源
      最近更新 更多