我使用的是带有CRON调度的quartz.net。我将misfire指令设置为:触发并继续:
trigger = Quartz.TriggerBuilder.Create()
.WithIdentity(jobData.JobId, jobData.ClientApplicationId.ToString())//.WithCronSchedule(scheduleInfo.CronExpression, WithMisfireHandlingInstructionDoNothing())
.WithSchedule(Quartz.CronScheduleBuilder.CronSchedule(new Quartz.CronExpression(scheduleInfo.CronExpression)).WithMisfireHandlingInstructionFireAndProceed())//.WithMisfireHandlingInstructionDoNothing()) ///.WithMisfireHandlingInstructionFireAndProceed()
.StartAt(DateTime.Now).ForJob(iJobDetail)
.Build();据我所知,如果遗漏了触发器,它应该在调度程序启动时立即触发(最多一次,即使作业应该运行多次)。
由于某些原因,当我测试它时,作业从未被触发。假设我有一个作业应该从4:00开始每小时运行一次。我在7:30打开调度程序,直到8:00才收到任何触发事件。misfireThreshold设置为(60000) -1分钟。
该作业是statefuul,不允许并发运行。我正在使用一个持久性存储(AdoJobStore) -saving到MSSQL DB的计划。
你知道为什么触发器没有按计划启动吗?
发布于 2016-10-12 21:43:13
请尝试下面的代码。确保将{YourCronExpressionString}替换为您自己的cron表达式。
trigger = Quartz.TriggerBuilder.Create()
.WithIdentity(jobData.JobId, jobData.ClientApplicationId.ToString())
.WithCronSchedule("{YourCronExpressionString}", x => x.WithMisfireHandlingInstructionFireAndProceed())
.StartAt(DateTime.Now).ForJob(iJobDetail)
.Build();发布于 2014-01-15 16:26:28
尝试使用PauseJob(jobKey)方法未命中
使用ResumeJob(jobKey)方法再次触发
例如:
设置cronexpression:每4小时
7:30,调用pauseJob方法
在8:01,调用resumeJob方法
8:00的工作将会重新开始
https://stackoverflow.com/questions/20993164
复制相似问题