Quartz C#Scheduler - 防止作业在15分钟后自动重试

时间:2017-03-01 14:51:29

标签: c# quartz.net

我想经营一项需要很长时间才能完成的工作。但是,15分钟后,触发器在作业完成之前被重新触发。我想这是一个默认的故障安全处理失败的工作。如何将此超时时间增加到30分钟?

这是我的作业调度程序代码:

var trigger = TriggerBuilder.Create()
            .WithIdentity(triggerName, triggerGroup)
            .WithSchedule(CronScheduleBuilder
                .CronSchedule(cronExpression).InTimeZone(TimeZoneInfo.Utc))
                .Build();

var scheduleRequestJob = JobBuilder.Create<T>()
            .WithIdentity(taskName, taskGroup)
            .Build();

        _scheduler.ScheduleJob(scheduleRequestJob, trigger);

1 个答案:

答案 0 :(得分:1)

Quartz没有Fail安全时间。石英会重新找回你的工作只有两种可能性。

  1. 触发器执行时间为short,它将在上次运行结束前触发。正如我们从您的CronExpression中可以看到的那样情况并非如此。
  2. 您的工作会引发JobExecutionException - (Api),这会立即重新安排您的工作。
  3. 要防止作业同时运行多次,请将DisallowConcurrentExecutionAttribute - (Api)添加到您的班级。

    [DisallowConcurrentExecution]
    public class MyJob: IJob
    {
    }
    

    这可以确保您想要的行为。