

在本教程中,为了便于阅读,以下术语可以互换使用:IScheduler和Scheduler,IJob和Job,IJobDetail和JobDetail,ITrigger和Trigger。
一个 Scheduler的生命周期是在Scheduler的创建开始的, 在Shutdown()方法结束。 一旦创建了IScheduler接口,就可以使用它添加,删除和列出作业和触发器,并执行其他与调度相关的操作(例如暂停触发器)。
Quartz 提供“builder”领域特定语言类(or DSL, 有时我们也称为流接口). 入门课程中我们已经看过了,在这里我们再单独看下这部分:
// define the job and tie it to our HelloJob class
//定义这个工作并将其与我们的HelloJob类联系起来
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "group1")
.Build();
// Trigger the job to run now, and then repeat every 10 seconds
//触发作业立即运行,然后每10秒重复一次 RepeatForever:永远重复RepeatForever()表示一直执行,另一个方法->WithRepeatCount(10),表示执行10次 .StartAt(DateBuilder.DateOf(23, 30, 0)):开始时间
//
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(10)//WithIntervalInSeconds间隔多少秒,也有间隔分钟和秒的方法
.RepeatForever())
.Build();
// Tell quartz to schedule the job using our trigger
//告诉quartz的调度schedule 哪个工作用了我们哪个触发器
await scheduler.ScheduleJob(job, trigger);以上代码块使用JobBuilder,通过流接口创建了一个IJobDetail类型job(product);同样的方法创建了trigger和特定于给定触发器类型的扩展方法。其他扩展方法有:
如果间隔N天或者某一段时间,建议使用WithCalendarIntervalSchedule
需要排除节假日的用WithCalendarIntervalSchedule
WithCalendarIntervalSchedule
WithCronSchedule
WithDailyTimeIntervalSchedule
WithSimpleSchedule:如果你只需要你的 job 在某个特定的时刻执行一次, 或者在某一个时刻重复执行几遍, 使用WithSimpleSchedule

DateBuilder类包含各种方法,用于为特定的时间点(如表示下一个偶数小时的日期 - 也就是说10:00:00,如果它当前为9:43:27)轻松构建DateTimeOffset实例。
如果您需要“一次性”执行(在某个特定时间只执行一项作业),或者如果您需要在给定时间启动作业,并重复执行N次,SimpleTrigger会很方便的T之间执行。如果您希望根据类似日历的时间表进行触发,例如“每个星期五,中午”或“每个月的第10天的10:15”,则CronTrigger非常有用。
共有条评论 网友评论