我已经实现了quartz.net 来在我的项目中安排任务。经过一些测试,我将它部署在 Prod env 上,它开始表现得很奇怪。由于此调度程序是 Windows 服务中的用户,因此我使用日志进行调试。每个作业都会通过 log4net 在日志文件中写入一些信息。工作 3-4 天后,服务停止在日志文件中写入任何信息。提示所有错误也写入日志文件,没有任何错误。手动重启后,一切都按原样开始,持续 3-4 天,然后再次发生。
这是调度程序的启动方式:
_jobsTimeTable = ComponentFactory.Resolve<TimeTable>();
// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
// Configuration of triggers and jobs
int i = 0;
string mainGroup = "mainGroup";
foreach (var job in _jobsTimeTable.TimeTable)
{
var trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("trigger" + i, mainGroup)
.WithCronSchedule(job.Value)
.Build();
var jobDetail = JobBuilder.Create(Type.GetType(job.Key)).StoreDurably(true)
.WithIdentity("job" + i, mainGroup).Build();
var ft = sched.ScheduleJob(jobDetail, trigger);
_log.InfoFormat("{0} has been scheduled to run at: {1} and repeat based on expression: {2}",
jobDetail.Key, ft.ToLocalTime(), trigger.CronExpressionString);
i++;
}
sched.Start();
我真的很感激任何想法。