Quartz.net跟踪和失误

时间:2014-03-04 15:20:36

标签: quartz-scheduler quartz.net

我对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()时是否有其他原因导致作业未运行?

1 个答案:

答案 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;注意:

相关问题