[英]How to handle Quartz trigger when Computer is turned off during sending push notification
为了每天24小时发送一次推送通知,我使用了石英库。 但是问题是当我的电脑关闭或网络断开连接时,也会触发这种代码安全性,但我的推送通知未发送。 我的问题是当我的电脑关闭或网络断开时如何管理触发器? 我想在我的电脑打开或连接到互联网后发送推送通知。
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInHours(24)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(11, 00))
)
.Build();
scheduler.ScheduleJob(job, trigger);
您需要Misfire指令 , JobExecutionException和DisallowConcurrentExecutionAttribute的组合
在作业上设置DisallowConcurrentExecutionAttribute
,这将防止您的作业同时执行多次。
[DisallowConcurrentExecution] public class MyJob : IJob { .... }
将“ Misfire Instruction
设置为您的触发器,这将告诉您的触发器立即触发以防万一它错过了执行。
ITrigger trigger = TriggerBuilder.Create() .WithDailyTimeIntervalSchedule (s => s.WithIntervalInHours(24) .OnEveryDay() .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(11, 00)) .WithMisfireHandlingInstructionFireAndProceed() ) .Build();
在执行工作期间(例如,无法访问Internet时)捕获任何异常。 然后抛出JobExecutionException
并告诉Quartz它应该再次触发触发器。
public class MyJob : IJob { public void Execute(IJobExecutionContext context) { try { // connect to internet or whatever..... } catch(Exception) { throw new JobExecutionException(true); } } }
下次,请先阅读文档 ;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.