我有这样的石英工作时间表:
_scheduler.ScheduleJob(job,
TriggerBuilder.Create().ForJob(job)
.WithSimpleSchedule(x =>
x.WithIntervalInSeconds(requeryTime.ToInt32())
.RepeatForever()
.WithMisfireHandlingInstructionNowWithRemainingCount()
)
.StartNow()
.Build())
要测试我的计划每10秒运行一次。如果我暂停服务然后恢复,我仍然可以看到所有工作被一个接一个地调用。我希望Quartz忽略(不排队)作业,只是恢复计划。 例如如果作业每10秒运行一次,我暂停服务1分钟,我就会快速连续运行6个作业。
如何确保Quartz忽略这些工作?
答案 0 :(得分:0)
简短回答是更改配置中的{{1}}:
{{1}}
默认值为60000毫秒(60秒)。
org.quartz.jobStore.misfireThreshold
调度程序将容忍的毫秒数'一个触发器 通过它的下一个火时间,然后被考虑"失火"。该 默认值(如果您未在此处输入此属性 配置)是60000(60秒)。
由于您的触发器每10秒运行一次,您可以将阈值降低到9秒,并且它应该按预期工作。
如果您想详细了解相关策略,可以阅读此article和this。
类似的问题已被问及,Circular Reference给了一个非常好的answer。