I have a job and I want to change that interval dynamically with a special formula. I rescheduled it but it doesn't work correctly.
I create the job in a hosted service, like this :
var gap = handler.GetRestTime();
var jobDataMap = new Dictionary<string, PlatformHandler>()
{
{nameof(PlatformHandler),handler}
};
IJobDetail job = JobBuilder.Create<ParserJob>()
.UsingJobData(new JobDataMap(jobDataMap))
.WithIdentity(new JobKey(coinId.ToString()))
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity(new TriggerKey(coinId.ToString()))
.StartNow()
.WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromMilliseconds(gap))
.RepeatForever())
.ForJob(job)
.Build();
await scheduler.ScheduleJob(job, trigger);
And this is my job class
public async Task Execute(IJobExecutionContext context)
{
var handler = (PlatformHandler)context.JobDetail.JobDataMap[nameof(PlatformHandler)];
if (handler is null)
_logger.LogError("Handler is null , data didn't receive, HandlerKey={HandlerKey}", handler.Id);
if (handler.State == HandlerState.Running)
await _parserService.Parser(handler);
var jobkey = new JobKey(handler.Id.ToString());
var triggers = await context.Scheduler.GetTriggersOfJob(jobkey);
var trigger = triggers.Single();
var updatedTrigger = trigger.GetTriggerBuilder().WithSimpleSchedule(x => x.WithIntervalInMinutes(1)).Build();
await context.Scheduler.RescheduleJob(trigger.Key, updatedTrigger);
}
For example, I want to change my trigger interval to 1 minute.
But it runs like before the interval change. Thank you in advance.