WorkScheduler.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System.Threading.Tasks;
  2. using Microsoft.Extensions.Logging;
  3. using Quartz;
  4. using FMSAdmin.QuartzSchedule.Jobs;
  5. namespace FMSAdmin.QuartzSchedule.Schedulers {
  6. public class WorkScheduler {
  7. private readonly ILogger<WorkScheduler> _logger;
  8. private readonly IScheduler _scheduler;
  9. public WorkScheduler(ILogger<WorkScheduler> logger, IScheduler scheduler) {
  10. _logger = logger;
  11. _scheduler = scheduler;
  12. }
  13. public Task StartWorkToOrderAndResultEveryDay() {
  14. _logger.LogInformation("StartWorkToOrderEveryDay");
  15. var jobDetails = JobBuilder
  16. .CreateForAsync<WorkToOrderAndResultJob>()
  17. .WithIdentity("WorkToOrderJobEveryDay")
  18. .WithDescription("매일 0시 작업진행 처리")
  19. .Build();
  20. var trigger = TriggerBuilder
  21. .Create()
  22. .StartNow()
  23. .WithCronSchedule("1 0 0 * * ?") // 매일 0시 0분 1초에 실행
  24. .Build();
  25. // [초 분 시 일 월 요일 연도]
  26. // */10 * * * * ? => 10초에 한번
  27. // 1 * * * * ? => 매분 1초
  28. // 1 0 0 * * ? => 매일 0시 0분 1초에 실행
  29. var result = _scheduler.ScheduleJob(jobDetails, trigger);
  30. return result;
  31. }
  32. }
  33. }