public async Task TaskExecuter(EbTask _task) { try { IJobDetail job = CreateJob(_task); ITrigger trigger = CreateTrigger(_task); await Scheduler.ScheduleJob(job, trigger); MessageProducer3.Publish(new AddSchedulesToSolutionRequest() { Task = _task, SolnId = _task.JobArgs.SolnId, UserId = _task.JobArgs.UserId, UserAuthId = _task.JobArgs.UserAuthId, JobKey = job.Key.Name, TriggerKey = trigger.Key.Name, Status = ScheduleStatuses.Active, ObjId = _task.JobArgs.ObjId, Name = _task.Name }); Console.WriteLine(job.Key + " Job Scheduled"); } catch (Exception e) { Console.WriteLine("Task Executer Exception : " + e.Message); } }
public ITrigger CreateTrigger(EbTask _task) { ITrigger trigger = TriggerBuilder.Create() .WithIdentity("T-" + _task.JobArgs.SolnId + "-" + _task.JobArgs.ObjId + "-" + _task.Expression + "-" + DateTime.Now) .StartNow() .WithSchedule(CronScheduleBuilder.CronSchedule(_task.Expression) /*.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Coordinated Universal Time"))*/) .Build(); return(trigger); }
public IJobDetail CreateJob(EbTask _task) { JobKey jobKey; IJobDetail job = null; JobDataMap _dataMap = new JobDataMap(); _dataMap.Add("args", JsonConvert.SerializeObject(_task.JobArgs)); jobKey = JobKey.Create(((JobTypes)_task.JobType).ToString() + DateTime.Now); if (_task.JobType == JobTypes.EmailTask) { job = JobBuilder.Create <EmailJob>().WithIdentity(jobKey).UsingJobData(_dataMap).Build(); } else if (_task.JobType == JobTypes.SmsTask) { job = JobBuilder.Create <SmsJob>().WithIdentity(jobKey).UsingJobData(_dataMap).Build(); } else if (_task.JobType == JobTypes.Slack) { job = JobBuilder.Create <SlackJob>().WithIdentity(jobKey).UsingJobData(_dataMap).Build(); } else if (_task.JobType == JobTypes.ReportTask) { job = JobBuilder.Create <ReportJob>().WithIdentity(jobKey).UsingJobData(_dataMap).Build(); } else if (_task.JobType == JobTypes.SqlJobTask) { job = JobBuilder.Create <SqlJob>().WithIdentity(jobKey).UsingJobData(_dataMap).Build(); } else if (_task.JobType == JobTypes.ApiTask) { job = JobBuilder.Create <ApiJob>().WithIdentity(jobKey).UsingJobData(_dataMap).Build(); } else if (_task.JobType == JobTypes.MyJob) { job = JobBuilder.Create <MyJob>().WithIdentity(jobKey).Build(); } return(job); }