Quartz Scheduler not starting instantly

294 views Asked by At

After creating New Quartz by (Quartz Enterprise Scheduler .NET) with With Cron Schedule, the NextFireTimeUtc will start one hour after. How can I set it that start instantly?

TriggerBuilder triggerBuilder = TriggerBuilder
            .Create()
            .WithIdentity(TriggerName, GroupeId)
            .WithPriority(1)
            .StartNow();


        StringBuilder interval;

        string cronExpression = default(string);

        interval = new StringBuilder();

        switch (ruleScheduler.Schedulers.IntervalUnitType)
        {
            case Scheduler.IntervalUnitTypeInfo.Minute:
                {
                    interval.Append(string.Format("0 0/{0}", ruleScheduler.Schedulers.Interval));
                    break;
                }
            case Scheduler.IntervalUnitTypeInfo.Second:
                {
                    interval.Append(string.Format("0/{0} 0", ruleScheduler.Schedulers.Interval));
                    break;
                }
        }

        if (ruleScheduler.Schedulers.StartTimeOfDay.HasValue)
        {
            interval.Append(string.Format(" {0}", ruleScheduler.Schedulers.StartTimeOfDay.Value.Hour));

            if (ruleScheduler.Schedulers.EndTimeOfDay.HasValue)
            {
                interval.Append(string.Format("-{0}", ruleScheduler.Schedulers.EndTimeOfDay.Value.Hour));
            }
        }
        else
        {
            interval.Append("*");
        }

        string dayOfWeek = string.IsNullOrEmpty(ruleScheduler.Schedulers.DaysOfWeek) ? "?" : ruleScheduler.Schedulers.DaysOfWeek.ToString();

        cronExpression = string.Format("{0} * * {1} *", interval.ToString(), dayOfWeek);

        triggerBuilder.WithCronSchedule(cronExpression);

        trigger = triggerBuilder.Build();
1

There are 1 answers

0
TamerM On

First of all, you should rewrite your trigger building code like this:

TriggerBuilder triggerBuilder = TriggerBuilder
            .Create()
            .WithIdentity(TriggerName, GroupeId)
            .WithPriority(1)
            .WithCronSchedule(cronExpression)
            .Build();

Then you pass the trigger to the Scheduler:

scheduler.scheduleJob(job, triggerBuilder );