using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using HZQR.Common; using JobApplication.Job; using Quartz; using Quartz.Impl; namespace JobApplication { public class QuartzService { IScheduler scheduler = null; /// /// 定时调度业务 /// public QuartzService() { //1.创建作业调度池(Scheduler) scheduler = StdSchedulerFactory.GetDefaultScheduler(); //2.创建一个具体的作业即job (具体的job需要单独在一个文件中执行) var job = JobBuilder.Create().Build();//同步结账单 //3.创建并配置一个触发器即trigger 3s执行一次 int interval = 3;//3小时执行一次,匹配下面的 WithIntervalInHours var trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartAt(DateBuilder.FutureDate(1, IntervalUnit.Second)) // get the next even-hour (minutes and seconds zero ("00:00")) .WithSimpleSchedule(x => x .WithIntervalInHours(interval) .RepeatForever()) // note that in this example, 'forJob(..)' is not called // - which is valid if the trigger is passed to the scheduler along with the job .Build(); //移动支付流水按自然日统计,一天一次就够了 var jobFixedRevenue = JobBuilder.Create().Build(); //var triggerFixedRevenue = TriggerBuilder.Create() // .WithIdentity("trigger2", "group1") // .StartAt(DateBuilder.DateOf(10, 0, 0))//每天10点开始执行 // .WithCalendarIntervalSchedule(x => x.WithIntervalInDays(1))//每天执行一次 // .EndAt(DateBuilder.DateOf(10, 30, 0)) // .Build(); var triggerFixedRevenue = TriggerBuilder.Create() .WithIdentity("trigger2", "group1") .StartAt(DateBuilder.DateOf(10, 0, 0))//每天10点开始执行 .WithSimpleSchedule(x => x .WithIntervalInHours(24) .RepeatForever()) .Build(); //移动支付流水按账期统计,一天一次就够了 var jobRevenueByStatement = JobBuilder.Create().Build(); var triggerRevenueByStatement = TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .StartAt(DateBuilder.DateOf(10, 0, 0))//每天10点开始执行 .WithSimpleSchedule(x => x .WithIntervalInHours(24) .RepeatForever()) .Build(); //4.将job和trigger加入到作业调度池中 scheduler.ScheduleJob(job, trigger);//同步结账单 scheduler.ScheduleJob(jobFixedRevenue, triggerFixedRevenue);//固化日营收数据 scheduler.ScheduleJob(jobRevenueByStatement, triggerRevenueByStatement);//固化结账日期营收数据 } /// /// 开启任务 /// public void Start() { scheduler.Start(); } /// /// 关闭任务 /// public void Stop() { //true:表示该Sheduler关闭之前需要等现在所有正在运行的工作完成才能关闭 //false:表示直接关闭 scheduler.Shutdown(true); } /// /// 暂停调度 /// public void Pause() { scheduler.PauseAll(); } /// /// 继续调度 /// public void Continue() { scheduler.ResumeAll(); } } public class TestJob : IJob { public string title; void IJob.Execute(IJobExecutionContext context) { //Console.WriteLine("Hellow JOB"); LogUtil.WriteLog("Hellow JOB:" + DateTime.Now.ToString()); } } public class TestJob2 : IJob { public string title; void IJob.Execute(IJobExecutionContext context) { //Console.WriteLine("Hellow JOB"); LogUtil.WriteLog("Hellow JOB2:" + DateTime.Now.ToString()); } } }