QuartzFactory.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using OASystem.API.OAMethodLib.Quartz;
  2. using Quartz;
  3. using Quartz.Spi;
  4. namespace QuzrtzJob.Factory
  5. {
  6. public class QuartzFactory
  7. {
  8. //1、声明一个调度工厂
  9. private ISchedulerFactory _schedulerFactory;
  10. private IScheduler _scheduler = default;
  11. private IJobFactory _IOCjobFactory;
  12. public QuartzFactory(ISchedulerFactory schedulerFactory, IJobFactory jobFactory)
  13. {
  14. _schedulerFactory = schedulerFactory;
  15. _IOCjobFactory = jobFactory;
  16. }
  17. public async Task<string> Start()
  18. {
  19. //2、通过调度工厂获得调度器
  20. _scheduler = await _schedulerFactory.GetScheduler();
  21. //这里是指定容器仓库
  22. _scheduler.JobFactory = _IOCjobFactory;
  23. //3、开启调度器
  24. await _scheduler.Start();
  25. //4、创建一个触发器
  26. var trigger = TriggerBuilder.Create()
  27. //.WithSimpleSchedule(x => x.WithIntervalInSeconds(2).RepeatForever())//每两秒执行一次
  28. .WithCronSchedule("0 15 9 * * ?")
  29. .Build();
  30. //5、创建任务
  31. var jobDetail = JobBuilder.Create<ALiYunPostMessageJob>()
  32. .WithIdentity("job", "group")
  33. .Build();
  34. //6、将触发器和任务器绑定到调度器中
  35. await _scheduler.ScheduleJob(jobDetail, trigger);
  36. return await Task.FromResult("将触发器和任务器绑定到调度器中完成");
  37. }
  38. }
  39. }