public async Task <IActionResult> CreateCallback([FromQuery] string cron, [FromQuery] string callback = "http%3A%2F%2Flocalhost%3A5000%2Fscheduler%2Fcallback") { Logger.LogInformation($"{nameof(cron)}: [{cron}], {nameof(callback)}: [{callback}]"); if (cron == null) { return(new JsonResult(new { Code = 400, Message = "CRON表达式不能为空" })); } // 调度器 if (Scheduler == null) { Scheduler = await SchedulerFactory.GetScheduler(); } await Scheduler.Start(); // 触发器 var trigger = TriggerBuilder.Create() .WithCronSchedule(cron) .Build(); // 任务器 var jobDeatail = JobBuilder.Create <CallbackJob>() .UsingJobData(nameof(callback), callback) .Build(); await Scheduler.ScheduleJob(jobDeatail, trigger); return(new JsonResult(new { Code = 200, Message = "定时回调任务创建成功" })); }
public void Start() { Trace.WriteLine("Service scheduler starting..."); try { Scheduler = SchedulerFactory.GetScheduler(); Trace.WriteLine("Firing triggers..."); Scheduler.Start(); Trace.WriteLine("Schedule Jobs"); foreach (var job in Jobs) { var jobDetail = JobBuilder.Create(job.GetType()) .WithIdentity(job.GetType().Name, "group1") .Build(); var tb = TriggerBuilder.Create() .WithIdentity(job.GetType().Name, "group1") .StartNow(); var trigger = job.GetSchedule(tb).Build(); Scheduler.ScheduleJob(jobDetail, trigger); } Trace.WriteLine("Do stuff"); } catch (TaskSchedulerException se) { Trace.WriteLine("Service failed to start"); Trace.WriteLine(se); } }
public async Task <bool> Start() { var jobDatas = await JobHelper.GetActiveJobListAsync(); IScheduler scheduler = await SchedulerFactory.GetScheduler(); scheduler.JobFactory = IOCFactory; foreach (var jobData in jobDatas) { try { DateTime startTime = jobData.StartTime ?? DateTime.Now; DateTime?endTime = jobData.EndTime; ITrigger trigger = JobHelper.CreateTrigger(jobData.JobName, jobData.JobGroup, startTime, jobData.CronExpression, endTime); IJobDetail jobDetail = JobHelper.CreateDetail <JobExecute>(jobData.JobName, jobData.JobGroup, jobData.DeepCloneByXML()); await scheduler.ScheduleJob(jobDetail, trigger); } catch { } } await scheduler.Start(); return(true); }
public async Task <bool> StopAll() { var scheduer = await SchedulerFactory.GetScheduler(); await scheduer.PauseAll(); return(true); }
public JobScheduler(bool isPrimary, Func <Type, IJobActivity> getJob, Func <IAppConfigRepository> appConfigRepository, ILogger traceSource) { // get a quartzScheduler _quartzScheduler = SchedulerFactory.GetScheduler(); _schedulerDbTools = new SchedulerDbContext(appConfigRepository); _traceSource = traceSource; _isPrimary = isPrimary; _getJob = getJob; }
public async Task <bool> StopJob(int id) { var scheduler = await SchedulerFactory.GetScheduler(); var jobData = await JobHelper.GetAutoJobAsync(id); if (await Exists(jobData.JobName, jobData.JobGroup)) { return(await scheduler.DeleteJob(new JobKey(jobData.JobName, jobData.JobGroup))); } return(true); }
public async Task ScheduleJobs(CancellationToken cancellationToken) { Console.WriteLine("Scheduling the jobs"); Scheduler = await SchedulerFactory.GetScheduler(cancellationToken); Scheduler.JobFactory = JobFactory; foreach (var jobMetadata in JobsMetadata) { await Scheduler.ScheduleJob(CreateJob(jobMetadata), CreateTrigger(jobMetadata), cancellationToken); Console.WriteLine($"{jobMetadata.JobName} has been scheduled"); } await Scheduler.Start(cancellationToken); }
static void RunOneSimulation(String path, string schedulerName) { var ps = new ProblemSetting(); var jobs = new List <Job>(); FileUtil.ReadData(path, ref ps, ref jobs); IScheduler scheduler = SchedulerFactory.GetScheduler(schedulerName, ps); var simulator = new Simulator(scheduler, ps, jobs); var simulationresult = simulator.Simulate(); Console.WriteLine(simulationresult); }
private void zUpdateScheduler() { if (rbOneTime.Checked && !(m_Schedule is OneTimeSchedule)) { m_Schedule = new OneTimeSchedule(); } if (rbHourly.Checked && !(m_Schedule is HourlySchedule)) { m_Schedule = new HourlySchedule() { HourlyRecurrence = TimeSpan.FromHours(1) }; } if (rbDaily.Checked && !(m_Schedule is DailySchedule)) { m_Schedule = new DailySchedule() { DailyRecurrence = 1, DailyRepetitionInterval = TimeSpan.FromHours(1) }; } if (rbWeekly.Checked && !(m_Schedule is WeeklySchedule)) { m_Schedule = new WeeklySchedule() { DailyRepetitionInterval = TimeSpan.FromHours(1) }; } if (rbMonthly.Checked && !(m_Schedule is MonthlySchedule)) { m_Schedule = new MonthlySchedule() { MonthlyRecurrenceType = MonthlyRecurrenceType.OrdinalDays, DailyRepetitionInterval = TimeSpan.FromHours(1) }; } zClearScheduler(); if (!(m_Schedule is OneTimeSchedule)) { m_Scheduler = SchedulerFactory.GetScheduler(m_Schedule); m_Scheduler.Dock = DockStyle.Fill; gbScheduler.Controls.Add(m_Scheduler); } }
public void Init() { var scheduler = SchedulerFactory.GetScheduler("testscheduler", 1); for (int i = 0; i < 10; i++) { IJobDetail job; if (i < 5) { job = JobBuilder.Create <HelloJob>().SetIdentifiyName("hello job" + i).Build(); } else { job = JobBuilder.Create <TenSecondJob>().SetIdentifiyName("10s job" + i).Build(); } var trigger = TriggerBuilder.Create().SetIdentifiyName("trigger" + i).SetRepeat().SetStartHour(12).Build(); scheduler.SchedulerJob(job, trigger); } }
/// <summary> /// 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名) /// </summary> /// <param name="jobQuartz">作业实体</param> public static void UpdateJobTime(JobQuartzOutPut jobQuartz) { try { IScheduler sched = SchedulerFactory.GetScheduler(); TriggerKey triggerKey = new TriggerKey(jobQuartz.TriggerName, jobQuartz.TriggerGroupName); ICronTrigger trigger = (ICronTrigger)sched.GetTrigger(triggerKey); if (trigger == null) { return; } RemoveJob(jobQuartz); QuartzEnum type = (QuartzEnum)Enum.Parse(typeof(QuartzEnum), jobQuartz.TriggerType); AddScheduleJob(jobQuartz, type); } catch (Exception e) { throw new Exception(e.Message); } }
/// <summary> /// 移除一个任务(使用默认的任务组名,触发器名,触发器组名) /// </summary> /// <param name="jobQuartz">作业实体</param> public static void RemoveJob(JobQuartzOutPut jobQuartz) { try { IScheduler sched = SchedulerFactory.GetScheduler(); JobKey jobkey = new JobKey(jobQuartz.JobName, jobQuartz.JobGroup); TriggerKey triggerKey = new TriggerKey(jobQuartz.TriggerName, jobQuartz.TriggerGroupName); //停止触发器 sched.PauseTrigger(triggerKey); //移除触发器 sched.UnscheduleJob(triggerKey); //删除任务 sched.DeleteJob(jobkey); } catch (Exception e) { throw new Exception(e.Message); } }
public async Task <IActionResult> Create([FromQuery] string cron, DateTime?start = null, DateTime?end = null, [FromQuery] string name = "default", [FromQuery] string desc = "default") { Logger.LogInformation($"{nameof(cron)}: [{cron}], {nameof(name)}: [{name}], {nameof(desc)}: [{desc}]"); //Console.WriteLine($"{nameof(desc)}: [{desc}], {nameof(cron)}: [{cron}]"); // 调度器 if (Scheduler == null) { Scheduler = await SchedulerFactory.GetScheduler(); } await Scheduler.Start(); // 这里打印的数据表示这是同一个Scheduler //Logger.LogInformation($"Scheduler.GetHashCode: {Scheduler.GetHashCode()}"); // 触发器 var trigger = TriggerBuilder.Create() .WithCronSchedule(cron) .StartAt(start ?? DateTime.Now) .EndAt(end ?? DateTime.MaxValue) .EndAt(end) //.WithIdentity(new TriggerKey(name+"-trigger") { Group = name+"-group" }) .Build(); // 任务器 var jobDeatail = JobBuilder.Create <PrintJob>() //.WithDescription(desc) //.WithIdentity(name+"-job", name+"-group") .UsingJobData(nameof(name), name) .UsingJobData(nameof(desc), desc) .Build(); await Scheduler.ScheduleJob(jobDeatail, trigger); return(new JsonResult(new { Code = 200, Message = "定时打印时间任务创建成功" })); }
public async Task <bool> Start(int id) { var scheduler = await SchedulerFactory.GetScheduler(); scheduler.JobFactory = IOCFactory; var jobData = await JobHelper.GetAutoJobAsync(id); if (jobData.JobStatus == 0) { return(false); } DateTime startTime = jobData.StartTime ?? DateTime.Now; DateTime?endTime = jobData.EndTime; ITrigger trigger = JobHelper.CreateTrigger(jobData.JobName, jobData.JobGroup, startTime, jobData.CronExpression, endTime); IJobDetail jobDetail = JobHelper.CreateDetail <JobExecute>(jobData.JobName, jobData.JobGroup, jobData.DeepCloneByXML()); await scheduler.ScheduleJob(jobDetail, trigger); return(true); }
/// <summary> /// Gets the Mock Scheduler /// </summary> /// <param name="queueName"> /// Queue Name /// </param> /// <param name="tableName"> /// Table Name /// </param> /// <returns> /// The IScheduler instance to use. /// </returns> /// <exception cref="ArgumentNullException"> /// Parameter config cannot be null. /// </exception> public static IScheduler Scheduler(string queueName, string tableName, CommerceConfig config) { if (config == null) { throw new ArgumentNullException("config", "Parameter config cannot be null."); } if (scheduler == null) { scheduler = SchedulerFactory.GetScheduler(CloudConfigurationManager.GetSetting("Lomo.Commerce.Scheduler.ConnectionString"), queueName, tableName); if (config.UseMockPartnerDependencies == true) { scheduler = LateBinding.BuildObjectFromLateBoundAssembly <IScheduler>("MockScheduler", LateBoundMocksAssemblyTypes); } } return(scheduler); }
public async Task <bool> Exists(string name, string group) { var scheduler = await SchedulerFactory.GetScheduler(); return(await scheduler.GetJobDetail(new JobKey(name, group)) != null); }