在MVC应用程序中使用Quartz.Net,Misfire指令

时间:2013-11-05 14:45:58

标签: asp.net-mvc quartz.net misfire-instruction

我在与NuGet一起安装的MVC应用程序中使用Quartz.Net。

并有一个这样的触发器:

ITrigger trigger = TriggerBuilder.Create()
                    .WithIdentity("trigger1", "group1")                              
                    .WithCronSchedule("0 0 4 1 * ?")                                
                    .Build();

如何添加Misfire指令,以便在服务应该被触发时服务器发生故障时,一旦服务器再次启动就会触发事件?

那怎么可能,Quarts会跟踪上次触发事件的时间吗?我找不到可以保存的数据库或文件。

1 个答案:

答案 0 :(得分:1)

您可以使用带有lambda表达式的重载来定义cron schedule属性:

ITrigger trigger = TriggerBuilder.Create()
        .WithIdentity("trigger1", "group1")
        .WithCronSchedule("0 0 4 1 * ?", x => x.WithMisfireHandlingInstructionFireAndProceed())
        .Build();

Quartz通过检查数据库中的下一个预定时间是否过去来检测失火。要使方案正常工作,您需要使用像您现在一样的持久存储。

火灾时间存储在表QRTZ_TRIGGERS的NEXT_FIRE_TIME和PREV_FIRE_TIME列中。这些值是.NET DateTime tics。