private async Task <CronObject> CreateCronJob(CronMessage message) { var job = JobBuilder.Create <CronJobService>() .WithIdentity(message.JobName) .UsingJobData(nameof(CronMessage.QueueConnection), message.QueueConnection) .UsingJobData(nameof(CronMessage.QueueName), message.QueueName) .UsingJobData(nameof(CronMessage.Message), message.Message) .Build(); var trigger = TriggerBuilder.Create() .ForJob(job) .WithCronSchedule(message.Cron) .WithIdentity($"{message.JobName}Trigger") .StartNow() .Build(); return(new CronObject() { Succeeded = false, JobName = message.JobName, DateCreated = DateTime.Now, LastModified = DateTime.Now, Message = message.Message, CronSchedule = message.Cron, LastRun = DateTime.MinValue, Queue = message.QueueName, CronJob = job, CronTrigger = trigger, }); }
public async Task <ActionResult> UpsertCronJob([FromBody] CronMessage message) { var upserted = await _cronRepository.UpsertCronJob(message); if (!upserted) { throw new Exception("Could not upsert job."); } return(Ok()); }
private async Task <bool> CreateAndStartCronJob(CronMessage message) { var cronObject = await CreateCronJob(message); var isScheduled = await ScheduleCronJob(cronObject); if (isScheduled) { CronJobs.Add(cronObject.JobName, cronObject); return(true); } return(false); }
public async Task <bool> UpsertCronJob(CronMessage message) { var cronJob = await GetCronJob(message.JobName); if (cronJob == null) { return(await CreateAndStartCronJob(message)); } else { var isDeleted = await DeleteCronJob(message.JobName); return(await CreateAndStartCronJob(message)); } return(true); }