private IJobDetail CreateJob(JobScheduleDTO jobMetadata) { return(JobBuilder .Create(jobMetadata.JobType) .WithIdentity(jobMetadata.JobName.ToString()) .WithDescription($"{jobMetadata.JobName}") .Build()); }
/// <summary> /// 停止任务 /// </summary> /// <param name="Schedule"></param> /// <returns></returns> public async Task StopTask(JobScheduleDTO Schedule) { var Scheduler = await schedulerFactory.GetScheduler(); await Scheduler?.Shutdown(); Schedule.JobStatu = JobStatus.Stopped; }
private ITrigger CreateTrigger(JobScheduleDTO jobMetadata) { return(TriggerBuilder.Create() .WithIdentity(jobMetadata.JobName.ToString()) .WithCronSchedule(jobMetadata.CronExpression) .WithDescription($"{jobMetadata.JobName}") .Build()); }
private IJobDetail CreateJob(JobScheduleDTO schedule, JobDataMap data = null) { var jobType = schedule.JobType; return(JobBuilder .Create(jobType) .WithIdentity(new JobKey(schedule.JobName)) .WithDescription(jobType.Name) .SetJobData(data) .Build()); }
public CustomeSchedule( ISchedulerFactory schedulerFactory, IJobFactory jobFactory, JobScheduleDTO jobScheduleDTO, ILogger <CustomeSchedule> logger, IServiceProvider provider ) { this.schedulerFactory = schedulerFactory; this.jobFactory = jobFactory; this.jobScheduleDTO = jobScheduleDTO; this.logger = logger; this._provider = provider; }
/// <summary> /// 开始执行任务 /// </summary> /// <param name="Schedule"></param> /// <returns></returns> public async Task StartTask(JobScheduleDTO Schedule) { var t = Assembly.GetExecutingAssembly(); Schedule.JobType = t.GetType($"{t.GetName().Name}.Jobs.{Schedule.AssemblyName}"); var Scheduler = await schedulerFactory.GetScheduler(); Scheduler.JobFactory = jobFactory; var jobData = new JobDataMap { new KeyValuePair <string, object>("JSON", Schedule?.Params ?? string.Empty) }; await Scheduler.ScheduleJob(CreateJob(Schedule, jobData), CreateTrigger(Schedule)); await Scheduler.Start(); }
private ITrigger CreateTrigger(JobScheduleDTO schedule) { var trig = TriggerBuilder .Create() .WithIdentity($"{schedule.JobName}.trigger"); logger.LogInformation($"本地时间:{DateTime.Now}"); logger.LogInformation($"本地UTC时间:{DateTime.UtcNow}"); logger.LogInformation($"任务执行时间:{schedule.StartNow.ToString()}"); //判断是用 cron触发器还是simple //目前simple只支持立即执行以后还可以扩展 if (schedule.TriggerType == TriggerType.Cron) { trig.WithCronSchedule(schedule.CronExpression); } else if (schedule.TriggerType == TriggerType.Simple) { trig.StartAt(new DateTimeOffset(schedule.StartNow.Value, TimeSpan.Zero)); } return(trig.Build()); }
/// <summary> /// 删除任务 /// </summary> /// <param name="Schedule"></param> /// <returns></returns> public async Task DeleteJob(JobScheduleDTO Schedule) { var Scheduler = await schedulerFactory.GetScheduler(); await Scheduler.DeleteJob(new JobKey(Schedule.JobName)); }