AlarmLogPushScheduler.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 AlarmLogPushScheduler {
  7. private readonly ILogger<AlarmLogPushScheduler> _logger;
  8. private readonly IScheduler _scheduler;
  9. public AlarmLogPushScheduler(ILogger<AlarmLogPushScheduler> logger, IScheduler scheduler) {
  10. _logger = logger;
  11. _scheduler = scheduler;
  12. }
  13. public Task Start() {
  14. _logger.LogInformation("AlarmLogPushScheduler Start");
  15. var jobDetails = JobBuilder
  16. .CreateForAsync<AlarmLogPushJob>()
  17. .WithIdentity("AlarmLogPushJob15Min")
  18. .WithDescription("15분 마다 경보푸시 발송 처리")
  19. .Build();
  20. var trigger = TriggerBuilder
  21. .Create()
  22. .StartNow()
  23. .WithCronSchedule("0 */5 * * * ?") // 15분에 한번
  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. }