Esempio n. 1
0
        public IJobDetail CreateJob(Type job, string name, string group)
        {
            IJobDetail jobDetail = JobBuilder.Create(job).Build();

            jobDetail = jobDetail.GetJobBuilder().WithIdentity(name, group).Build();

            return(jobDetail);
        }
Esempio n. 2
0
        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}.");
        }