我们安装了quartz.net调度程序服务并配置了一个(内存)作业,每天晚上10点运行。如果重新启动托管此服务的服务器,是否有办法在服务启动时强制作业运行?在正常情况下,作业应该按计划在晚上10点开始,但是每当重新启动服务器/服务时,我们都希望该作业立即运行,即使它没有安排在那时运行。如果有一些配置值来实现这一点,那将是最好的选择。
答案 0 :(得分:1)
编写一个小代码,读取一个小的xml文件(自定义的一个).... 并将其放入您的启动代码中。
foreach( xmlElement in yourXmlFile)
{
string someJobName= ""; /* read xml for jobName */
String someJobGroup= ""; /* read xml for job group name */
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(someJobName, someJobGroup)
.startNow()
.build();
}
答案 1 :(得分:0)
您可以借助WithMisfireHandlingInstructionFireAndProceed
CronScheduleBuilder
方法执行此操作,如下所示:
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSchedule(CronScheduleBuilder
.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 09, 00)
.WithMisfireHandlingInstructionFireAndProceed()
//MISFIRE_INSTRUCTION_FIRE_NOW
.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("GTB Standard Time"))
)
//.ForJob(myJobKey)
.Build();
scheduler.ScheduleJob(job, trigger);
希望这会有所帮助......