【问题标题】:Quartz cron expression for cron triggers executed every Nth Hour/Day/Week/Month用于每 N 小时/天/周/月执行的 cron 触发器的 Quartz cron 表达式
【发布时间】:2012-08-14 04:47:19
【问题描述】:

我正在开发一个应用程序,让用户能够安排一些活动。 用户提供的输入是

  1. N 的值
  2. 小时/天/周/月选项
  3. 开始日期
  4. 开始时间

我无法为每个重复间隔类型(即小时/天/周/月)正确获取 cron 表达式,以便从开始日期计算触发时间。

【问题讨论】:

    标签: quartz-scheduler scheduler crontrigger


    【解决方案1】:

    Quartz 文档建议使用 SimpleTrigger http://www.quartz-scheduler.org/docs/cookbook/BiDailyTrigger.html,每隔一天做一个示例:

    Trigger trigger = new SimpleTrigger("trigger1", "group1");
    trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
    // 24 hours * 60(minutes per hour) * 60(seconds per minute) * 1000(milliseconds per second)
    trigger.setRepeatInterval(2L * 24L * 60L * 60L * 1000L);
    

    请注意,您需要设置触发开始时间和失火规则。

    【讨论】:

      【解决方案2】:

      我认为这是如何配置触发器的一个好的开始:

      http://www.opensymphony.com/quartz/wikidocs/CronTriggers%20Tutorial.html

      【讨论】:

      • 我已经详细研究过了。但我有这个独特的要求。让我试着起草一个用例来解释我想要做什么。用户故事 => 我想从 2009 年 10 月 30 日的 1755 小时开始,每 3 小时执行一次 abc,因此,2009 年 10 月 30 日的第一次活动 2009 年 10 月 30 日的第 1 次活动 2009 年 10 月 30 日的第 2 次活动 2009 年 10 月 30 日的第 3 次活动2355 4th on 31/10/2009 0255 等等.... 表达式:1. 0 55 */3 * * ? * => 这个触发时间是从 00 小时开始计算的,s0 它第一次在 1855 触发,而不是 1755 2. 0 55 17/3 * * ? * => 此触发器首先在 1755、2055 和 2355 上触发,现在它将在第二天触发。
      • 你看没有一个可能的表达可以解决我的问题。我现在没有主意了。请给我一些指示。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      相关资源
      最近更新 更多