Quartz调度将错过的预定作业排队

时间:2015-10-07 08:24:15

标签: quartz.net

我有这样的石英工作时间表:

_scheduler.ScheduleJob(job,
    TriggerBuilder.Create().ForJob(job)
        .WithSimpleSchedule(x =>                                             
        x.WithIntervalInSeconds(requeryTime.ToInt32())
        .RepeatForever()
        .WithMisfireHandlingInstructionNowWithRemainingCount()                                             
    )                                        
    .StartNow()
    .Build())

要测试我的计划每10秒运行一次。如果我暂停服务然后恢复,我仍然可以看到所有工作被一个接一个地调用。我希望Quartz忽略(不排队)作业,只是恢复计划。 例如如果作业每10秒运行一次,我暂停服务1分钟,我就会快速连续运行6个作业。

如何确保Quartz忽略这些工作?

1 个答案:

答案 0 :(得分:0)

简短回答是更改配置中的{{1}}:

{{1}}

默认值为60000毫秒(60秒)。

org.quartz.jobStore.misfireThreshold

  

调度程序将容忍的毫秒数'一个触发器   通过它的下一个火时间,然后被考虑"失火"。该   默认值(如果您未在此处输入此属性   配置)是60000(60秒)。

由于您的触发器每10秒运行一次,您可以将阈值降低到9秒,并且它应该按预期工作。

如果您想详细了解相关策略,可以阅读此articlethis

类似的问题已被问及,Circular Reference给了一个非常好的answer