private ITrigger CreateTrigger(Customer_JobInfo jobInfo) { TriggerBuilder tiggerBuilder = TriggerBuilder.Create().WithIdentity(jobInfo.JobName, jobInfo.JobGroupName); //错过的不管了,剩下的按正常执行。 //tiggerBuilder.WithCronSchedule(jobInfo.Cron, c => c.WithMisfireHandlingInstructionDoNothing()); ////错过的合并为一次执行,后续正常执行。 tiggerBuilder.WithCronSchedule(jobInfo.Cron, c => c.WithMisfireHandlingInstructionFireAndProceed()); ////错过的马上执行掉,后续正常执行 //tiggerBuilder.WithCronSchedule(jobInfo.Cron, c => c.WithMisfireHandlingInstructionIgnoreMisfires()); //if (jobInfo.StartTime > DateTime.Now) //{ // tiggerBuilder.StartAt(jobInfo.StartTime); //} //else //{ // tiggerBuilder.StartNow(); //} ITrigger trigger = tiggerBuilder.Build(); return(trigger); }
/// <summary> /// 重启任务 /// </summary> /// <param name="jobInfo"></param> /// <returns></returns> public bool ResumeJob(Customer_JobInfo jobInfo) { var jobKey = MangertKey.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); var triggerKey = MangertKey.CreateTriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); Scheduler.ResumeJob(jobKey).Wait(); return(true); }
/// <summary> /// 修改任务周期 /// </summary> /// <param name="jobInfo"></param> /// <returns></returns> public bool ModifyJobCron(Customer_JobInfo jobInfo) { var scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); var triggerKey = MangertKey.CreateTriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); var trigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now.AddYears(-1)).WithIdentity(triggerKey).WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()).Build(); Scheduler.RescheduleJob(triggerKey, trigger); return(true); }
public bool DeleteJob(Customer_JobInfo jobInfo) { var jobKey = MangertKey.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); var triggerKey = MangertKey.CreateTriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); Scheduler.PauseTrigger(triggerKey); Scheduler.UnscheduleJob(triggerKey); Scheduler.DeleteJob(jobKey); return(true); }
public ActionResult AddJob(Customer_JobInfo obj) { if (!_quartzmanger.ValidExpression(obj.Cron)) { var result = new ExecutionResult() { IsSuccess = false, Message = "Cron表达式不正确" }; return(Json(result)); } if (obj.JobId > 0) { //修改 var jobId = _quartzrepository.UpdateCustomerJobInfo(obj); if (jobId) { var result = new ExecutionResult() { IsSuccess = true, Message = "成功" }; return(Json(result)); } else { var result = new ExecutionResult() { IsSuccess = false, Message = "失败" }; return(Json(result)); } } else { var jobId = _quartzrepository.Insert(obj); if (jobId) { var result = new ExecutionResult() { IsSuccess = true, Message = "成功" }; return(Json(result)); } else { var result = new ExecutionResult() { IsSuccess = false, Message = "失败" }; return(Json(result)); } } }
/// <summary> /// /// </summary> /// <param name="entity"></param> /// <returns></returns> public bool UpdateCustomerJobInfo(Customer_JobInfo entity) { var t8 = Db.Updateable <Customer_JobInfo>().SetColumns(it => new Customer_JobInfo() { Cron = entity.Cron, Description = entity.Description, DLLName = entity.DLLName, CronExpressionDescription = entity.CronExpressionDescription, FullJobName = entity.FullJobName, JobArgs = entity.JobArgs, JobName = entity.JobName, UpdateTime = DateTime.Now, Updator = "admin", TriggerName = entity.TriggerName, TriggerGroupName = entity.TriggerGroupName, RequestUrl = entity.RequestUrl, JobGroupName = entity.JobGroupName }).Where(it => it.JobId == entity.JobId).ExecuteCommand(); return(t8 > 0); }
/// <summary> /// 查询job详情 /// </summary> /// <param name="Id"></param> /// <returns></returns> public Customer_JobInfo FindById(int JobId) { return(Customer_JobInfo.GetById(JobId)); }
/// <summary> /// 新增job /// </summary> /// <param name="model"></param> /// <returns></returns> public bool Insert(Customer_JobInfo model) { return(Customer_JobInfo.Insert(model)); }
/// <summary> /// 运行job /// </summary> /// <param name="jobInfo"></param> /// <returns></returns> public async Task <bool> RunJob(Customer_JobInfo jobInfo) { var jobKey = MangertKey.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); var triggerKey = MangertKey.CreateTriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); var flag = Scheduler.CheckExists(jobKey).Result; if (flag) { //////存在job,先删除 await Scheduler.PauseTrigger(triggerKey); await Scheduler.UnscheduleJob(triggerKey); await Scheduler.DeleteJob(jobKey); Console.WriteLine("当前job已经存在,无需调度:{0}", jobKey.ToString()); } if (!string.IsNullOrWhiteSpace(jobInfo.DLLName)) { var jobdata = new JobDataMap() { new KeyValuePair <string, object>(MangertKey.JobDataMapKeyJobId, jobInfo.JobId), new KeyValuePair <string, object>("JobArgs", jobInfo.JobArgs), new KeyValuePair <string, object>("RequestUrl", jobInfo.RequestUrl) }; var type = GetClassInfo(jobInfo.DLLName, jobInfo.FullJobName); IJobDetail jobDetail = JobBuilder.Create(type) .WithIdentity(jobKey) .UsingJobData(jobdata) .RequestRecovery(false) .StoreDurably() .WithDescription("使用quartz进行持久化存储") .Build(); ////两种不同的写法结果不同 //IJobDetail jobDetail = JobBuilder.Create<TestJob2>() // .WithIdentity(jobKey) // .UsingJobData(jobdata) // .RequestRecovery(false) // //.StoreDurably() // .WithDescription("使用quartz进行持久化存储") // .Build(); CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); ITrigger trigger = TriggerBuilder.Create() //.StartAt(DateTimeOffset.Now.AddYears(-1)) .StartNow() .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .ForJob(jobKey) //.WithSimpleSchedule(x => x.WithIntervalInSeconds(2).RepeatForever()) //.WithSchedule(cronScheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .WithCronSchedule(jobInfo.Cron) .Build(); if (!Scheduler.IsStarted) { await Scheduler.Start(); } await Scheduler.ScheduleJob(jobDetail, trigger); } return(true); }