| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | using OASystem.API.OAMethodLib.Quartz;using OASystem.API.OAMethodLib.Quartz.Jobs;using Quartz;using Quartz.Spi;namespace QuzrtzJob.Factory{    public class QuartzFactory    {        //1、声明一个调度工厂        private ISchedulerFactory _schedulerFactory;        private IScheduler _scheduler = default;        private IJobFactory _IOCjobFactory;        public QuartzFactory(ISchedulerFactory schedulerFactory, IJobFactory jobFactory)        {            _schedulerFactory = schedulerFactory;            _IOCjobFactory = jobFactory;        }        public async Task<string> Start()        {            //2、通过调度工厂获得调度器            _scheduler = await _schedulerFactory.GetScheduler();            //这里是指定容器仓库            _scheduler.JobFactory = _IOCjobFactory;            //3、开启调度器            await _scheduler.Start();            //4、创建一个触发器            var trigger = TriggerBuilder.Create()                            //.WithSimpleSchedule(x => x.WithIntervalInSeconds(2).RepeatForever())//每两秒执行一次                            .WithCronSchedule("0 15 9 * * ?")                            .Build();                        var taskTrigger = TriggerBuilder.Create()                            //.WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每六十秒执行一次                            .WithCronSchedule("0 0 9,18 * * ?") //每天早上九点和下午六点触发                            .Build();            var taskMsgTrigger = TriggerBuilder.Create()                            //.WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每六十秒执行一次                            .WithCronSchedule("0 0 9,18 * * ?") //每天早上九点和下午六点触发                            .Build();            var teamCurrencyTrigger = TriggerBuilder.Create()                            //.WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每六十秒执行一次                            .WithCronSchedule("0 0 0 * * ? ") //每天零点零分点触发                            .Build();            //5、创建任务            var jobDetail = JobBuilder.Create<ALiYunPostMessageJob>().WithIdentity("job1", "group") .Build();            var taskJobDetail = JobBuilder.Create<TaskJob>().WithIdentity("job2", "group").Build();            var taskMsgJobDetail = JobBuilder.Create<TaskNewsFeedJob>().WithIdentity("job3", "group").Build();            var teamCurrencyJobDetail = JobBuilder.Create<GroupTeamCurrencyJob>().WithIdentity("job4", "group").Build();            //6、将触发器和任务器绑定到调度器中            await _scheduler.ScheduleJob(jobDetail, trigger);            await _scheduler.ScheduleJob(taskJobDetail, taskTrigger);            await _scheduler.ScheduleJob(taskMsgJobDetail, taskMsgTrigger);            await _scheduler.ScheduleJob(teamCurrencyJobDetail, teamCurrencyTrigger);            return await Task.FromResult("将触发器和任务器绑定到调度器中完成");        }    }}
 |