我对quartz.net有几个问题。
是什么记录了Quartz.net是否有失误情况?
以下情况会发生什么:
如果某个作业已经运行但由于某些错误导致无法完成,那么这是否会被视为失误?
如果我重新发布解决方案会发生什么,跟踪重置是什么?
有没有办法接收有关调度程序已完成和无法执行的操作的信息?
我在Run方法中有以下代码:
IJobDetail dailyUserMailJob = new JobDetailImpl("DailyUserMailJob", null, typeof(Jobs.TestJob));
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithCronSchedule("0 0 4 1 * ?", x => x.WithMisfireHandlingInstructionFireAndProceed())
.Build();
this.Scheduler.ScheduleJob(dailyUserMailJob, trigger);
this.Scheduler.Start();
这项工作应该每个月凌晨4点开始运作。
测试时我已经设置了系统时钟,以便将jobb错过一个月。根据文档,当使用WithMisfireHandlingInstructionFireAndProceed时,应该运行第一件事情,但它的剂量。代码是否有问题,或者在使用WithMisfireHandlingInstructionFireAndProceed()时是否有其他原因导致作业未运行?
答案 0 :(得分:2)
如果错过了一份工作,就有逻辑把它带回来。但是,有一个"窗口"在多远的路上。
<add key="quartz.jobStore.misfireThreshold" value="60000"/>
您可以增加此值。
如果您有ADOStore,则会持续失火。因此&#34;如果电源熄灭&#34;,重新启动时......你可以从失火中恢复过来。
如果你有一个RamStore ......如果&#34;电源耗尽&#34;,一切都在记忆中开始......所以你不会得到错误处理,因为一切都是& #34;在记忆中&#34;而且记忆力已经消失。
...
如果您使用Sql Server(AdoStore)并在其上放置Profiler / Trace,您将看到引擎&#34; poll&#34;对于失火.......用一个&#34;回到这么远的时间&#34;基于misfireThreshold。
请看这个链接:
http://nurkiewicz.blogspot.com/2012/04/quartz-scheduler-misfire-instructions.html
了解更多详细信息。其中有一个&#34; withMisfireHandlingInstructionFireAndProceed&#34;注意: