繁体   English   中英

QUARTZ.NET 链 cron 作业

[英]QUARTZ.NET chain crone jobs

在我的 Net5 应用程序中,我尝试实现 Quartz cron 作业,但使用同步实现。我希望每个作业都等待前一个作业完成。 在经历了很多示例和错误之后,我找到了这个解决方案LINK ,因为阅读使作业同步运行的唯一方法是链接它们。 但我也需要这些工作在每个星期天开始,我尝试过 cron 工作。 问题是,如果我使用 crone 触发,则只有第一个工作被解雇。 如何重构示例以使用 cron 作业或每个星期日运行。我对触发器进行了一些更改:

 ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("Trigger", "Update All")
                .WithSchedule(CronScheduleBuilder
                    .WeeklyOnDayAndHourAndMinute(DayOfWeek.Sunday, 12, 04)
                    .InTimeZone(TimeZoneInfo.Utc)
                    .WithMisfireHandlingInstructionFireAndProceed())
                 .StartNow()
                 .Build();

我找到了解决方案。 首先,删除了链接并只为调度程序添加了一个线程。此外,我为每个作业添加了属性 [DisallowConcurrentExecution] 并使用了 WithPriority()。

另一种可能的选择是传入需要在第一个作业之后运行的作业的名称,然后在第一个作业结束时实际安排第二个作业。 所以你安排你的第一个工作,然后当第一个工作完成它的任务它安排第二个工作......等等。

IJob接口的 Execute 方法包括作为方法参数传递给作业的IJobExecutionContext object。 IJobExecutionContext包含对Scheduler的引用,您可以使用它来调度下一个作业。 您可以使用IJobExecutionContext.JobDetail.JobDataMap引用将数据(例如下一个作业的信息)传递给作业。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM