WorkScheduler.cs 1.4 KB

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