次のように構成されたジョブと対応するトリガーがあるとします。
var jobKey = new JobKey(typeof(HelloJob).Name, typeof(HelloJob).Name);
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity(jobKey)
.RequestRecovery()
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity(string.Format("{0}Trigger", typeof(HelloJob).Name), typeof(HelloJob).Name)
.StartAt(DateBuilder.FutureDate(1, IntervalUnit.Second))
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(1)
.WithRepeatCount(9))
.Build();
「quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz」を使用します。
通常の状況ではジョブが 10 回実行されることを期待していますが、もちろん実行されます。問題は、ライフサイクル中に停止が発生した場合に、ジョブの残りの繰り返し回数を続行することです。
たとえば、ジョブの 5 回目の実行が完了したときにプログラムを停止し、次にプログラムを実行するときは、ジョブを 5 回だけ実行したいのですが、10 回実行されます。
これを行うには、スケジューラ、ジョブ、およびトリガーをどのように構成すればよいですか?