Quartz.NET学习系列(五)--- 失败恢复和异常处理

来源:互联网 发布:python是开源的吗 编辑:程序博客网 时间:2024/06/17 19:21

        Quartz.NET为了提高程序的容错性,加入了失败恢复和异常处理的机制。

失败恢复

        失败恢复是Quartz.NET触发器的方法,用于指示失败之后的操作

 ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create()                                           .WithIdentity("trigger2", "group1")                                           .StartAt(startTime)                                           .WithSimpleSchedule(x => x                                           .WithIntervalInSeconds(3)                                           .RepeatForever()                                           .WithMisfireHandlingInstructionNowWithExistingCount()) //设置失败后操作
还有的操作有


异常处理

       JobExecutionException 是主要捕获错误时操作错误的类,其中RefireImmediately=true表示出错后马上恢复执行,UnscheduleAllTriggers=true表示出错后暂停所有触发器。

具体代码如下(出错之后马上恢复):

        public class BadJob1 : IJob{private  ILog log = LogManager.GetLogger(typeof(BadJob1));public virtual void Execute(IJobExecutionContext context){JobKey jobKey = context.JobDetail.Key;                        JobDataMap dataMap = context.JobDetail.JobDataMap;                        int denominator = dataMap.GetInt("denominator");                        log.InfoFormat("{0} 被除数 {1}", "---" + jobKey + " 执行时间 " + DateTime.Now, denominator);try{                               int calculation = 4815 / denominator;}catch (Exception e){log.Info("--- Error 错误");JobExecutionException e2 = new JobExecutionException(e);                                dataMap.Put("denominator", "1");e2.RefireImmediately = true;throw e2;}log.InfoFormat("---{0} 执行完成 {1}", jobKey, DateTime.Now.ToString());}}

任务和触发器的定义以及计划的执行和上篇类似,此处就不在贴代码

0 0
原创粉丝点击