Quartz基本组成部分:
- 调度器:Scheduler
- 任务:JobDetail
- 触发器:Trigger,包括SimpleTrigger和CronTrigger
.
using Quartz; using Quartz.Impl; using System; using System.Threading.Tasks; namespace QuartzDemo1 { /// <summary> /// 我的任务 /// </summary> class MyJob : IJob { public Task Execute(IJobExecutionContext context) { JobDataMap jobdata = context.JobDetail.JobDataMap; JobDataMap triggerdata= context.Trigger.JobDataMap; Console.WriteLine($"JobKey:{jobdata["JobKey"]},TriggerKey:{triggerdata["TriggerKey"]},{DateTime.Now.ToString()}"); return Task.CompletedTask; } } class Program { static async Task Main(string[] args) { IScheduler scheduler;/*****************this's Scheduler********************/ { //调度器工厂 StdSchedulerFactory factory = new StdSchedulerFactory(); scheduler = await factory.GetScheduler(); //调度器 } IJobDetail job; /*****************this's Ijob********************/ { //创建一个工作任务 ,myjob1是名称,mygroup1是组名。 job = JobBuilder.Create<MyJob>().WithIdentity("myjob1", "mygroup1") .UsingJobData("JobKey", "JobValue") //传数据 .Build(); //..... 可以创建多个Job然后通过 group进行分组 //例如: 有7个接口 A/B/C/O/X/Y/Z //ABC分别接收ABC类型订单(已确定执行时间一致) 每天06:00执行 //XYZ分别发送XYZ订单(已确定执行时间一致) 每天12:00/22:00点 //O接口定时清理数据 每天23:00执行 //则可以把 ABC分为 ABCGroup XYZ分为XYZGroup O单独分为Ogroup; } ITrigger trigger; /*****************this's Itrigger********************/ { //触发器 trigger = TriggerBuilder.Create() .WithIdentity("mytrigger1", "mygroup1") //定时器与JobGroup对应 //.WithCronSchedule("0/5 * * * * ?") //5秒执行一次 //同下 (定时) .WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever()) //同上(定时) .UsingJobData("TriggerKey", "TriggerValue") //传数据 .Build(); } //将任务与触发器添加到调度器中 _ = scheduler.ScheduleJob(job, trigger); _ = scheduler.Start(); Console.Read(); } } }