Пример #1
0
 private IJobDetail CreateJob(JobScheduleDTO jobMetadata)
 {
     return(JobBuilder
            .Create(jobMetadata.JobType)
            .WithIdentity(jobMetadata.JobName.ToString())
            .WithDescription($"{jobMetadata.JobName}")
            .Build());
 }
Пример #2
0
        /// <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;
        }
Пример #3
0
 private ITrigger CreateTrigger(JobScheduleDTO jobMetadata)
 {
     return(TriggerBuilder.Create()
            .WithIdentity(jobMetadata.JobName.ToString())
            .WithCronSchedule(jobMetadata.CronExpression)
            .WithDescription($"{jobMetadata.JobName}")
            .Build());
 }
Пример #4
0
        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());
        }
Пример #5
0
 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;
 }
Пример #6
0
        /// <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();
        }
Пример #7
0
        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());
        }
Пример #8
0
        /// <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));
        }