public IJobDetail CreateJob(Type job, string name, string group) { IJobDetail jobDetail = JobBuilder.Create(job).Build(); jobDetail = jobDetail.GetJobBuilder().WithIdentity(name, group).Build(); return(jobDetail); }
public async Task ScheduleJobRetry(IJobDetail jobDetail, int attempt, TimeSpan retryInterval) { await GetQuartz(); var retryJob = jobDetail.GetJobBuilder() .WithIdentity($"{jobDetail.Key.Name}-{attempt}", jobDetail.Key.Group) .UsingJobData("Attempt", attempt) .Build(); var retryTrigger = TriggerBuilder.Create() .StartAt(DateTimeOffset.Now.Add(retryInterval)) .Build(); try { await quartz.ScheduleJob(retryJob, retryTrigger); } catch (ObjectAlreadyExistsException) { // NOOP } log.LogInformation($"Scheduled attempt #{attempt} for job {jobDetail.Key.Name}, which will be done in {retryInterval}."); }