Quartz.NET触发器未触发:同部署两台机器表现不一致问题
Quartz.NET Windows服务触发器在部分机器无法触发问题
我使用Quartz.NET开发了一个Windows服务,在一台机器部署后一切正常,触发器可按时触发;但将相同部署包部署到另一台机器时,触发器仅完成注册、调度处于运行状态,却无法触发执行。我已排查所有可能问题,仍无法定位原因。以下是Quartz配置代码:
{ try { var jobFactory = new JobFactory(_serviceProvider); _scheduler.JobFactory = jobFactory; var triggers = new List<ITrigger>(); foreach (var location in LocationCronExpression.Keys) { string cronExpression = LocationCronExpression[location]; var jobDetail = JobBuilder.Create<CronJob>() .WithIdentity($"CronJob_{location}", "DefaultGroup") .UsingJobData("Location", location) .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity($"Trigger_{location}", "DefaultGroup") .WithSchedule(CronScheduleBuilder .CronSchedule(cronExpression) .InTimeZone(TimeZoneInfo.Local)) .ForJob(jobDetail) .Build(); await _scheduler.ScheduleJob(jobDetail, trigger); triggers.Add(trigger); ServiceLogger.Log.Debug($"Зарегистрирован триггер: {trigger.Key.Name} для тегов с location4 = {location}"); } ServiceLogger.Log.Debug("Триггеры зарегистрированы."); await _scheduler.Start(); } ServiceLogger.Log.Debug($"Quartz запущен. {_scheduler.IsStarted}"); foreach(var trigger in triggers) { DateTimeOffset? nextFireTime = trigger.GetNextFireTimeUtc(); if (nextFireTime.HasValue) { ServiceLogger.Log.Debug($"Следующее выполнение триггера {trigger.Key.Name} для {trigger.JobKey.Name}: {nextFireTime.Value.DateTime}"); } else { ServiceLogger.Log.Debug("Триггер не запланирован на выполнение"); } } ServiceLogger.Log.Debug($"Scheduler shutdown??? {_scheduler.IsShutdown}"); } catch (Exception ex) { ServiceLogger.Log.Fatal("Ошибка при создании расписания запуска службы: " + ex); return; } }
内容的提问来源于stack exchange,提问作者Артём Пучков
相关产品推荐
相关产品推荐

