【问题标题】:Quartz Job not firing as expected石英作业未按预期触发
【发布时间】:2013-05-01 20:36:59
【问题描述】:

我的 .NET 应用程序中有以下 cronTrigger 表达式,每 45 分钟触发一次此作业...

0 0/45 * * * ?

但是它每 15 分钟和 45 分钟触发一次......例如,它触发如下

下午 2:15 下午 3:00 下午 3:15 下午 4:00 下午 4:15 下午 5:00

我只希望它在@2:15、3:00、3:45、4:30 等时触发。

谢谢

【问题讨论】:

    标签: c# quartz-scheduler cronexpression


    【解决方案1】:

    当您关心在时钟或日历上的特定时间(每小时、每分钟、每天、每周的特定时间等)运行的某事时,Cron 触发器非常有用。

    当您更关心工作之间的间隔时间(45 分钟)时,您应该使用SimpleTrigger。你可以让它每 45 分钟重复一次。

    【讨论】:

      【解决方案2】:

      您可以使用以下触发器:

      ITrigger trigger = TriggerBuilder.Create()
      .WithIdentity("trigger1", "group1")
      .WithDailyTimeIntervalSchedule(x => x.WithIntervalInMinutes(45))
      .Build();
      

      【讨论】:

      • 这和使用 SimpleTrigger 一样吗?
      • 或多或少...使用此触发器,您还可以设置基于日历的时间表(例如从周一到周五),而 SimpleTrigger 无法做到这一点。
      【解决方案3】:

      “/”语法指定周期内的增量,而不是重复间隔。诚然,这是一个微妙而令人困惑的区别。

      在这种情况下,在 60 分钟期间只有一个可用增量(45 分钟)。第一个数字指定开始的值,在本例中为 0。因此作业只会在 1 小时和 45 分钟触发。

      如果周期可以被多个增量分割,例如 0/10,那么它将在每个时间触发,例如在 10、20、30 等分钟。

      如果您希望定期触发作业,则可以使用 Quartz SimpleTrigger 并指定 repeatInterval

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多