【发布时间】:2015-01-26 21:18:07
【问题描述】:
作业正在 Application_Start() 处安排:
var y= JobBuilder.Create<YY>()
.WithIdentity("YY")
.Build();
ITrigger z= TriggerBuilder.Create()
.WithDescription("Runs.")
.WithDailyTimeIntervalSchedule(x => x
.WithIntervalInHours(24)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(9, 30))
.InTimeZone(TimeZoneInfo.Utc))
.Build();
Scheduler.ScheduleJob(y, z);
在工作中,我在开始时记录“工作开始”。 该作业在过去几天正常运行,但从过去 2 天开始,我可以在日志中看到“作业开始”出现 3 次,相差几毫秒。添加到作业中的通知邮件程序也会发生同样的情况。
我怀疑这是由于指令失灵,但是否有任何调试和确定问题原因的方法,以及确保仅执行 1 个作业实例。
此作业需要 1-1.5 小时才能执行,并且可能在作业触发时发生了服务器重新启动和部署。这可能会影响触发场景。
【问题讨论】:
-
我认为实际发生的情况是该特定代码在短时间内连续运行了多次。我认为这不是石英问题。触发此代码的代码更有可能运行多次。您使用的是哪个版本的 Quartz?
-
Quartz 版本是 2.2.2 由于调度程序驻留在 Application_Start() 中,我不太确定它是否可以运行多次。还有其他作业(运行时间不长)以相同的方式安排并且运行良好。
-
好吧,我遇到了这样的问题,这是由于复制粘贴造成的,当我们添加新作业时,我们复制了现有的作业定义块并更改了除触发作业之外的所有内容,因此新触发器正在开始现有的工作。确保您的问题不是这样的!
标签: c# quartz-scheduler jobs quartz.net