Quartz.NET学习系列(二)--- 简单触发器
来源:互联网 发布:软件测试入门书籍 编辑:程序博客网 时间:2024/05/21 03:57
Quartz.NET的触发器比较多,但是常用的有两个分别是SimpleTrigger和CronTrigger,本篇学习下SimpleTrigger
SimpleTrigger 的创建方式如下:
ISimpleTrigger trigger = (ISimpleTrigger) TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartAt(startTime) .Build();ISimpleTrigger有较多方法,常用的方法有StartAt(开始时间) WithSimpleSchedule(执行间隔次数等设置) ForJob(特定的任务触发器)
以下是应用的代码:
public class SimpleJob : IJob{private ILog log = LogManager.GetLogger(typeof(SimpleJob));public virtual void Execute(IJobExecutionContext context){JobKey jobKey = context.JobDetail.Key; log.InfoFormat("任务: {0} 执行时间:{1}", jobKey, DateTime.Now.ToString());}}
public class SimpleTriggerExample { public static void Run() { ILog log = LogManager.GetLogger(typeof (SimpleTriggerExample)); ISchedulerFactory sf = new StdSchedulerFactory(); IScheduler sched = sf.GetScheduler(); DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(null, 5); //job1在5秒之后运行 IJobDetail job = JobBuilder.Create<SimpleJob>() .WithIdentity("job1", "group1") .Build(); ISimpleTrigger trigger = (ISimpleTrigger) TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartAt(startTime) .Build(); DateTimeOffset? ft = sched.ScheduleJob(job, trigger); log.Info(job.Key + " 开始时间: " + ft + " 执行次数: " + trigger.RepeatCount + " 执行间隔" + trigger.RepeatInterval.TotalSeconds); // job2 每1秒执行一次,共执行6次(其中开始1此,重复5次) job = JobBuilder.Create<SimpleJob>() .WithIdentity("job2", "group1") .Build(); trigger = (ISimpleTrigger) TriggerBuilder.Create() .WithIdentity("trigger2", "group1") .StartAt(startTime) .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).WithRepeatCount(5)) .Build(); ft = sched.ScheduleJob(job, trigger); log.Info(job.Key + " 开始时间: " + ft + " 执行次数: " + trigger.RepeatCount + " 执行间隔" + trigger.RepeatInterval.TotalSeconds); //job2被替换 原来照常执行 组别不一样 trigger = (ISimpleTrigger) TriggerBuilder.Create() .WithIdentity("trigger2", "group2") .StartAt(startTime) .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).WithRepeatCount(2)) .ForJob(job) .Build(); ft = sched.ScheduleJob(trigger); log.Info(job.Key + " 开始时间: " + ft + " 执行次数: " + trigger.RepeatCount + " 执行间隔" + trigger.RepeatInterval.TotalSeconds); // job3 5秒后执行 job = JobBuilder.Create<SimpleJob>() .WithIdentity("job3", "group1") .Build(); trigger = (ISimpleTrigger) TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Second)) .Build(); ft = sched.ScheduleJob(job, trigger); log.Info(job.Key + " 开始时间: " + ft + " 执行次数: " + trigger.RepeatCount + " 执行间隔" + trigger.RepeatInterval.TotalSeconds); sched.Start(); log.Info("------- 开始计划 -----------------"); job = JobBuilder.Create<SimpleJob>() .WithIdentity("job5", "group1") .Build(); ISimpleTrigger trigger1 = (ISimpleTrigger)TriggerBuilder.Create() .WithIdentity("trigger5", "group1") .StartAt(startTime) .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).WithRepeatCount(2)) .Build(); ft = sched.ScheduleJob(job, trigger1); log.Info(job.Key + " 开始时间: " + ft + " 执行次数: " + trigger1.RepeatCount + " 执行间隔" + trigger1.RepeatInterval.TotalSeconds); job = JobBuilder.Create<SimpleJob>() .WithIdentity("job6", "group1") .StoreDurably() .Build(); sched.AddJob(job, true); log.Info("job6触发..."); sched.TriggerJob(new JobKey("job6", "group1")); log.Info("------- 等待20秒 --------------"); Thread.Sleep(TimeSpan.FromSeconds(20)); sched.Shutdown(true); log.Info("------- 关闭计划 -----------------"); SchedulerMetaData metaData = sched.GetMetaData(); log.Info(string.Format("执行任务数:{0}", metaData.NumberOfJobsExecuted)); } }
0 0
- Quartz.NET学习系列(二)--- 简单触发器
- Quartz.NET学习系列(三)--- Cron触发器
- Quartz.NET学习系列(十)--- 触发器执行优先级
- 作业调度框架 Quartz 学习笔记(二) -- 简单触发器(SimpleTrigger)
- 作业调度框架 Quartz 学习笔记(二) -- 简单触发器(SimpleTrigger)
- 作业调度框架 Quartz 学习笔记(二) -- 简单触发器(SimpleTrigger)
- 作业调度框架 Quartz 学习笔记(二) -- 简单触发器(SimpleTrigger)
- Quartz.NET学习系列
- Quartz学习(三)--简单触发器(SimpleTrigger)
- Quartz.NET--Trigger 触发器
- Quartz.NET--Trigger 触发器
- Quartz.NET学习系列(十二)--- Quartz.NET集群
- spring学习系列 -- 定时器二 Quartz
- spring学习系列 -- 定时器二 Quartz
- Quartz.NET学习系列(一)--- 快速入门
- Quartz.NET学习系列(四)--- 数据注入
- Quartz.NET学习系列(六)--- 中断任务
- Quartz.NET学习系列(八)--- 任务监听器
- 【bzoj1927】【SDOI2010】【星际竞速】【bzoj1877】【SDOI2009】【晨跑】
- 欢迎使用CSDN-markdown编辑器
- 垃圾收集与内存分配 - 《深入理解Java虚拟机》ch03笔记
- 深入JVM系列(一)之内存模型与内存分配
- TCP-IP协议详解(1)邮差与邮局 (网络协议概观)
- Quartz.NET学习系列(二)--- 简单触发器
- C#_label值清空
- [boost][filesystem] 扫描给定目录下所有项
- SIFT特征提取分析
- Problem B 素数距离问题
- 杂文-浆糊传说
- 使用工具IDEA开发android
- POJ 2139 Six Degrees of Cowvin Bacon(floyd两点间最短距离)
- 查看归档日志大小的脚本