我有一个Windows服务创建并托管一些作业(今天的数字是64,最多可以达到1400),可以作为不同的时间表执行。在我目前已经说过的那些64个应该在每天凌晨4点和下午4点开始的时候,每天应该在每天凌晨3点和下午3点开始,其余14个应该在每天凌晨5点和下午5点开始。我看到很少有工作按照时间表被正确触发,它会留下几个工作,从不触发它们。
当我查看QRTZ_表中的crons表达式和Next fire time时,一切看起来都很好。我有以下配置,下面是我创建和触发计划的代码。什么一定出错了,怎么能搞清楚。
IJobDetail objJobDet = JobBuilder.Create<AuditProcessor>()
.WithIdentity("Job-" + obj.Key.ToString(), AuditType.ToString())
.UsingJobData(obj.Key)
.Build();
ITrigger objJobTrigger = TriggerBuilder.Create()
.WithIdentity("Trigger-" + obj.Key.ToString(), AuditType.ToString())
.StartAt(new DateTimeOffset(startAtTime))
.WithCronSchedule(objCronExp[obj.Key], x => x.WithMisfireHandlingInstructionIgnoreMisfires())
.Build();
QrtzController.AddJobToScheduler(objJobDet, objJobTrigger);
配置:
<add key="QrtzSchedulerInstanceName" value="SignAuditInstance"/>
<add key="QrtzSchedulerInstanceId" value="SignAuditInstanceOne"/>
<add key="QrtzThreadPoolType" value="Quartz.Simpl.SimpleThreadPool, Quartz"/>
<add key="QrtzthreadCount" value="50"/>
<add key="QrtzThreadPriority" value="Normal"/>
<!--Job Store Properties-->
<add key="QrtZJobStoreMisfireThreshold" value="60000"/>
<add key="QrtzJobStoreType" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"/>
<add key="QrtzJobStoreUseProps" value="false"/>
<add key="QrtzJobStoreDataSource" value="default"/>
<add key="QrtzJobStoreClustered" value="false"/>