单个触发器中具有多个CRON计划的Quzrtz调度程序



我正在尝试创建一个每天执行两次的Windows服务。我成功地使用了两个触发器添加到一个作业中创建它。

var job = JobBuilder.Create<Job>().StoreDurably().WithIdentity("Report_Name", "Report_Group").Build();
            scheduler.AddJob(job, true);
            var trigger_1 = TriggerBuilder.Create()
                                .WithIdentity("Report_Name_1", "Report_Group_A")
                                .StartNow()
                                .WithCronSchedule(string.Format("0 {0} {1} ? * *", Utility.Schedule_StartTime_1.Minute, Utility.Schedule_StartTime_1.Hour)) //0 Min hour
                                .ForJob(job)
                                .Build();
            var trigger_2 = TriggerBuilder.Create()
                               .WithIdentity("Report_Name_2", "Report_Group_B")
                               .StartNow()
                               .WithCronSchedule(string.Format("0 {0} {1} ? * *", Utility.Schedule_StartTime_2.Minute, Utility.Schedule_StartTime_2.Hour)) //0 Min hour
                               .ForJob(job)
                               .Build();
            scheduler.ScheduleJob(trigger_1);
            scheduler.ScheduleJob(trigger_2);
            scheduler.Start();

我可以使用一个触发器添加多个cron计划

no,触发器只能有一个时间表。

这样做的主要原因之一是在调度程序如何解决如何解决之间的竞争时防止情况状况。

想象您有一个相交时间表的工作:假设您想每15分钟和每小时运行一次工作,并且最多需要10分钟才能执行它。在这种情况下,您需要指定

时要如何处理方案
  • 工作正在执行,但调度程序将解雇新的执行。
  • 两个时间表应解雇一份工作

允许处理此类情况,触发器具有优先级和失火说明等属性。

最新更新