12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- 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("将触发器和任务器绑定到调度器中完成");
- }
- }
- }
|