bdotnet
bdotnet

Reputation: 353

Quartz.net scheduler

We have installed quartz.net scheduler service and configured a (memory)job to run daily @ 10 pm. In case the server hosting this service is restarted, is there a way to force the job to run as soon as the service comes up? In normal scenario job should fire at 10pm as scheduled, but whenever the server/service is restarted, we want the job to run immediately even if it is not scheduled to run at that time. If there's some configuration value to achieve this, that would be the best option.

Upvotes: 0

Views: 268

Answers (2)

Murat Yıldız
Murat Yıldız

Reputation: 12050

You can perform this with the help of WithMisfireHandlingInstructionFireAndProceed method of CronScheduleBuilder as shown below:

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); 

Upvotes: 0

granadaCoder
granadaCoder

Reputation: 27904

Write a little code that reads a small xml file (custom one of your own doing).... and put it in your startup code.

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();

}

Upvotes: 1

Related Questions