【问题标题】:Quzrtz scheduler with multiple cron schedules in a single triggerQuartz 调度器在单个触发器中具有多个 cron 调度
【发布时间】:2017-06-01 16:29:02
【问题描述】:

我正在尝试创建一个每天执行两次的 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 计划

【问题讨论】:

    标签: cron scheduled-tasks quartz.net


    【解决方案1】:

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

    这样做的主要原因之一是为了防止调度程序不清楚如何解决之间的竞争。 状况。

    假设您有一个包含 2 个相交计划的作业:假设您希望每 15 分钟和每小时运行一次作业,并且执行它最多需要 10 分钟。在这种情况下,您需要指定要如何处理场景,当

    • 作业正在执行,但调度程序触发了新的执行。
    • 两个计划都应该触发一个作业

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多