![](/img/trans.png)
[英]How to chain more than 2 jobs using JobChainingJobListener Quartz.net?
[英]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.