我在与NuGet一起安装的MVC应用程序中使用Quartz.Net。
并有一个这样的触发器:
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithCronSchedule("0 0 4 1 * ?")
.Build();
如何添加Misfire指令,以便在服务应该被触发时服务器发生故障时,一旦服务器再次启动就会触发事件?
那怎么可能,Quarts会跟踪上次触发事件的时间吗?我找不到可以保存的数据库或文件。
答案 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。