QuartzFactory.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using OASystem.API.OAMethodLib.Quartz;
  2. using OASystem.API.OAMethodLib.Quartz.Jobs;
  3. using Quartz;
  4. using Quartz.Spi;
  5. namespace QuzrtzJob.Factory
  6. {
  7. public class QuartzFactory
  8. {
  9. //1、声明一个调度工厂
  10. private ISchedulerFactory _schedulerFactory;
  11. private IScheduler _scheduler = default;
  12. private IJobFactory _IOCjobFactory;
  13. public QuartzFactory(ISchedulerFactory schedulerFactory, IJobFactory jobFactory)
  14. {
  15. _schedulerFactory = schedulerFactory;
  16. _IOCjobFactory = jobFactory;
  17. }
  18. public async Task<string> Start()
  19. {
  20. //2、通过调度工厂获得调度器
  21. _scheduler = await _schedulerFactory.GetScheduler();
  22. //这里是指定容器仓库
  23. _scheduler.JobFactory = _IOCjobFactory;
  24. //3、开启调度器
  25. await _scheduler.Start();
  26. //4、创建一个触发器
  27. var trigger = TriggerBuilder.Create()
  28. //.WithSimpleSchedule(x => x.WithIntervalInSeconds(2).RepeatForever())//每两秒执行一次
  29. .WithCronSchedule("0 15 9 * * ?")
  30. .Build();
  31. var taskTrigger = TriggerBuilder.Create()
  32. //.WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每六十秒执行一次
  33. .WithCronSchedule("0 0 9,18 * * ?") //每天早上九点和下午六点触发
  34. .Build();
  35. var taskMsgTrigger = TriggerBuilder.Create()
  36. //.WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每六十秒执行一次
  37. .WithCronSchedule("0 0 9,18 * * ?") //每天早上九点和下午六点触发
  38. .Build();
  39. var teamCurrencyTrigger = TriggerBuilder.Create()
  40. //.WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每六十秒执行一次
  41. .WithCronSchedule("0 0 0 * * ? ") //每天零点零分点触发
  42. .Build();
  43. //5、创建任务
  44. var jobDetail = JobBuilder.Create<ALiYunPostMessageJob>().WithIdentity("job1", "group") .Build();
  45. var taskJobDetail = JobBuilder.Create<TaskJob>().WithIdentity("job2", "group").Build();
  46. var taskMsgJobDetail = JobBuilder.Create<TaskNewsFeedJob>().WithIdentity("job3", "group").Build();
  47. var teamCurrencyJobDetail = JobBuilder.Create<GroupTeamCurrencyJob>().WithIdentity("job4", "group").Build();
  48. //6、将触发器和任务器绑定到调度器中
  49. await _scheduler.ScheduleJob(jobDetail, trigger);
  50. await _scheduler.ScheduleJob(taskJobDetail, taskTrigger);
  51. await _scheduler.ScheduleJob(taskMsgJobDetail, taskMsgTrigger);
  52. await _scheduler.ScheduleJob(teamCurrencyJobDetail, teamCurrencyTrigger);
  53. return await Task.FromResult("将触发器和任务器绑定到调度器中完成");
  54. }
  55. }
  56. }