feat(新增): 按照日历执行任务

This commit is contained in:
bunny 2024-08-15 16:43:45 +08:00
parent 7783b97141
commit 55e3509d1f
1 changed files with 19 additions and 3 deletions

View File

@ -87,8 +87,8 @@ public class JobService : IJobService
.StoreDurably() // 设置作业为持久的
.WithIdentity("simpleJob", "简单的JOB")
.Build();
scheduler.AddJob(jobDetail,true).GetAwaiter().GetResult();
scheduler.AddJob(jobDetail, true).GetAwaiter().GetResult();
var trigger = TriggerBuilder.Create()
.ForJob(jobDetail)
@ -97,14 +97,30 @@ public class JobService : IJobService
.StartNow()
// TODO StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(20, 0))触发器从每天的20:00晚上8点开始。
// TODO EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(22, 0))触发器在每天的22:00晚上10点结束。
// TODO WithIntervalInSeconds(5)在开始和结束时间之间触发器将每5秒触发一次作业。
// TODO WithIntervalInSeconds(2)在开始和结束时间之间触发器将每2秒触发一次作业。
.WithDailyTimeIntervalSchedule(x => x.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(16, 0))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(22, 0))
// 设置工作时间在每周的星期几
.OnDaysOfTheWeek(DayOfWeek.Sunday, DayOfWeek.Monday, DayOfWeek.Thursday)
.WithIntervalInSeconds(2)
)
.Build();
var trigger2 = TriggerBuilder.Create()
.ForJob(jobDetail)
.UsingJobData("trigger", "trigger值")
.WithIdentity("testTrigger", "测试发出器")
.StartNow()
// WithIntervalInDays(1):触发器将按照日历间隔,每天触发一次。
// PreserveHourOfDayAcrossDaylightSavings(true)这个选项指示调度器在夏令时变更时保持小时不变。例如如果作业在凌晨2点执行夏令时开始或结束时作业仍然会在凌晨2点执行调度器会自动调整时间以适应夏令时的变化。
// SkipDayIfHourDoesNotExist(true)如果由于夏令时变更导致指定的小时不存在例如在夏令时开始时从凌晨1点跳到凌晨3点调度器将跳过这一天不会执行作业。
.WithCalendarIntervalSchedule(x =>
x.WithIntervalInDays(1)
.PreserveHourOfDayAcrossDaylightSavings(true)
.SkipDayIfHourDoesNotExist(true)
)
.Build();
scheduler.ScheduleJob(trigger).GetAwaiter().GetResult();
scheduler.Start().GetAwaiter().GetResult();
}