private static void TriggerScheduler() { var job = new JobDetailImpl("StoreInsiderInfoScheduler", typeof(Core.Jobs.StoreInsiderInfoJob)); var trigger = TriggerBuilder.Create(); //trigger.WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(1)); trigger.WithSchedule(CronScheduleBuilder.CronSchedule(new CronExpression("0 30,55 8 * * ?"))); trigger.StartNow(); var jobTwo = new JobDetailImpl("StoreActionScheduler", typeof(Core.Jobs.FindAndStoreActionJob)); var triggerTwo = TriggerBuilder.Create(); //triggerTwo.WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(2)); triggerTwo.WithSchedule(CronScheduleBuilder.CronSchedule(new CronExpression("0 30,50 10 * * ?"))); triggerTwo.StartNow(); var jobThree = new JobDetailImpl("UpdatePortfolioScheduler", typeof(Core.Jobs.UpdatePortfolioJob)); var triggerThree = TriggerBuilder.Create(); //triggerThree.WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(1)); triggerThree.WithSchedule(CronScheduleBuilder.CronSchedule(new CronExpression("0 0 18 * * ?"))); triggerThree.StartNow(); var schedFact = new StdSchedulerFactory(); var sched = schedFact.GetScheduler(); sched.ScheduleJob(job, trigger.Build()); sched.ScheduleJob(jobTwo, triggerTwo.Build()); sched.ScheduleJob(jobThree, triggerThree.Build()); sched.Start(); }
/// <summary> /// The post initialize. /// </summary> /// <suMMary> /// 初始化模块时启动任务 /// </suMMary> public override void PostInitialize() { base.PostInitialize(); var jobManager = this.IocManager.IocContainer.Resolve <IQuartzScheduleJobManager>(); jobManager.ScheduleAsync <Yearly>( job => { job.WithIdentity(nameof(Yearly), "MyGroup"); }, trigger => { trigger.WithIdentity(nameof(Yearly), "MyGroup").WithSchedule(CronScheduleBuilder.CronSchedule(Yearly.Schedule)).Build(); }); jobManager.ScheduleAsync <DailyTask>( job => { job.WithIdentity(nameof(DailyTask), "MyGroup"); }, trigger => { trigger.WithIdentity(nameof(DailyTask), "MyGroup").WithSchedule(CronScheduleBuilder.CronSchedule(DailyTask.Schedule)).Build(); }); jobManager.ScheduleAsync <MonthlyTask>( job => { job.WithIdentity(nameof(MonthlyTask), "MyGroup"); }, trigger => { trigger.WithIdentity(nameof(MonthlyTask), "MyGroup").WithSchedule(CronScheduleBuilder.CronSchedule(MonthlyTask.Schedule)).Build(); }); }
/// <summary> /// 启动多任务调度方法,放到webapi的startup /// 再添加任务的时候添加新的触发器添加到dic中, /// </summary> /// <typeparam name="TJob"></typeparam> public static void StartJobs <TJob>() where TJob : IJob { var scheduler = new StdSchedulerFactory().GetScheduler().Result; var job = JobBuilder.Create <TJob>() .WithIdentity("jobs") .Build(); var trigger1 = TriggerBuilder.Create() .WithIdentity("job.trigger") .StartNow() .WithSchedule(CronScheduleBuilder.CronSchedule("0/20 * 18 * * ?")) .ForJob(job) .Build(); var trigger2 = TriggerBuilder.Create() .WithIdentity("job.trigger2") .StartNow() .WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromSeconds(11)).RepeatForever()) .ForJob(job) .Build(); var dictionary = new Dictionary <IJobDetail, IReadOnlyCollection <ITrigger> > { { job, new HashSet <ITrigger> { trigger1 } } }; scheduler.ScheduleJobs(dictionary, true); scheduler.Start(); }
/// <summary> /// 修改任务 /// </summary> /// <returns></returns> public static void Modify(JobDetail jobDetail) { var trigger = Scheduler.GetTrigger(GetTriggerKey(jobDetail)); if (trigger == null) { throw new NotFoundException("没有找到该任务"); } // 修改 Job // 得到任务 var oldJobDetail = Scheduler.GetJobDetail(trigger.JobKey); // 修改数据 oldJobDetail = oldJobDetail.GetJobBuilder() .WithDescription(jobDetail.job_description) .UsingJobData("JobData", jobDetail.job_data) .Build(); // 修改 Trigger trigger = trigger.GetTriggerBuilder() .WithSchedule(CronScheduleBuilder.CronSchedule(jobDetail.cron).WithMisfireHandlingInstructionDoNothing()) .EndAt(jobDetail.end_time == DateTime.MinValue ? null : (DateTimeOffset?)new DateTimeOffset(jobDetail.end_time)) .Build(); // 删除旧 Job Scheduler.DeleteJob(trigger.JobKey); // 新 Job 加入调度池 Scheduler.ScheduleJob(oldJobDetail, trigger); }
public void startEventTimers() { Updater updater = GlobalHandlers.DatabaseHandler.getUpdater(handlers.instances.ViewerHandler.Feature.EVENTS); if (updater == null) { //no updater found GlobalHandlers.Debugger.write("There is no event updater setup."); return; } string timeSelection = updater.Type; Update_Times updateTimes; string mayBeUnused = String.Empty; string cronJob = String.Empty; if (timeSelection == "1") { updateTimes = Update_Times.Every_24_Hours; cronJob = "0 0 8 ? * *"; } IJobDetail job = JobBuilder.Create <EventsUpdaterJob>().WithIdentity("events", "main").Build(); CronScheduleBuilder builder = CronScheduleBuilder.CronSchedule(cronJob); builder.Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("events") .StartNow() .WithSchedule(builder).Build(); _scheduler.ScheduleJob(job, trigger); Updates.NextTimeUpdate_Events = convertUTC(trigger.GetNextFireTimeUtc().ToString()); GlobalHandlers.Debugger.write("Events trigger and job setup. Next fire is at: " + convertUTC(trigger.GetNextFireTimeUtc().ToString())); }
public static void create_schedule(string group_name, string schedule = "0/15 * * * * ?", Dictionary <string, object> para = null) { if (para == null) { para = new Dictionary <string, object>() { } } ; group_name = group_name.ToLower(); string name = group_name + "." + DateTime.Now.ToString("yyMMdd-HHmmss-fff"); JobDataMap m = new JobDataMap(); m.Put("ID___", name); m.Put("SCHEDULE___", schedule); m.Put("CURRENT_ID___", 0); m.Put("COUNTER___", new ConcurrentDictionary <long, bool>()); m.Put("PARA___", para); IJobDetail j = JobBuilder.Create <clsJobItem>().WithIdentity(name, group_name) .UsingJobData(m) .Build(); ITrigger t = TriggerBuilder.Create().WithIdentity(name, group_name) .WithSchedule(CronScheduleBuilder.CronSchedule(schedule)) .StartNow() .Build(); m_job.TryAdd(name, j); m_trigger.TryAdd(name, t); scheduler.ScheduleJob(j, t).Wait(); } }
public void Run <T>(string identity, string cronjob) where T : IJob { ISchedulerFactory schedFact = new StdSchedulerFactory(); IScheduler scheduler = schedFact.GetScheduler(); scheduler.Start(); IJobDetail job = JobBuilder.Create <T>() .WithIdentity(identity, "IT") .RequestRecovery() .Build(); var trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity(identity, "IT") .WithSchedule(CronScheduleBuilder .CronSchedule(cronjob) .InTimeZone(TimeZoneInfo.Local)) .StartAt(DateTime.UtcNow) .Build(); scheduler.ScheduleJob(job, trigger); Console.WriteLine("Rotation has been scheduled..."); }
private static async Task ScheduleJob(IServiceProvider serviceProvider) { var Propertis = new NameValueCollection { { "quartz.serializer.type", "binary" } }; var factory = new StdSchedulerFactory(Propertis); var sched = await factory.GetScheduler(); sched.JobFactory = new JobFactory(serviceProvider); await sched.Start(); var job = JobBuilder.Create <QuartzJob>() .WithIdentity("myJob", "group1") .Build(); // var trigger = TriggerBuilder.Create() // .WithIdentity("myTrigger", "group1") // .StartNow() // .WithSimpleSchedule(x => x // .WithIntervalInHours(11) // .RepeatForever()) //.Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("Test") .WithSchedule(CronScheduleBuilder .CronSchedule("0 0 9 1/1 * ? *")) .WithSimpleSchedule(x => x.WithIntervalInMinutes(2) .WithRepeatCount(10)) .Build(); await sched.ScheduleJob(job, trigger); }
public TriggerPropertyBundle LoadExtendedTriggerProperties(ConnectionAndTransactionHolder conn, TriggerKey triggerKey) { using (IDbCommand cmd = adoUtil.PrepareCommand(conn, AdoJobStoreUtil.ReplaceTablePrefix(StdAdoConstants.SqlSelectCronTriggers, tablePrefix, schedNameLiteral))) { adoUtil.AddCommandParameter(cmd, "triggerName", triggerKey.Name); adoUtil.AddCommandParameter(cmd, "triggerGroup", triggerKey.Group); using (IDataReader rs = cmd.ExecuteReader()) { if (rs.Read()) { string cronExpr = rs.GetString(AdoConstants.ColumnCronExpression); string timeZoneId = rs.GetString(AdoConstants.ColumnTimeZoneId); CronScheduleBuilder cb = CronScheduleBuilder.CronSchedule(cronExpr); if (timeZoneId != null) { cb.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById(timeZoneId)); } return(new TriggerPropertyBundle(cb, null, null)); } } throw new InvalidOperationException("No record found for selection of Trigger with key: '" + triggerKey + "' and statement: " + AdoJobStoreUtil.ReplaceTablePrefix(StdAdoConstants.SqlSelectCronTriggers, tablePrefix, schedNameLiteral)); } }
public async Task StartAsync() { try { _log.Info($"{nameof(MyServiceRunner)} is creating\r\n"); JobKey jobKey = new JobKey(nameof(MyServiceJob)); IJobDetail job = JobBuilder.Create(typeof(MyServiceJob)) .WithIdentity(jobKey) .Build(); CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule("0/1 * * * * ?"); ITrigger trigger = TriggerBuilder.Create().StartNow() .WithIdentity(nameof(MyServiceJob) + "_Trigger") .ForJob(jobKey) .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .Build(); await _scheduler.ScheduleJob(job, trigger); _log.Info($"{nameof(MyServiceRunner)} is created\r\n"); await _scheduler.Start(); _log.Info($"{nameof(MyServiceRunner)} is started\r\n"); } catch (Exception e) { _log.Error(e.Message); Console.WriteLine(e); } }
public bool ModifyJobCron(JobParamBaseModel job) { try { JobKey jobKey = CreateJobKey(job.JobName, job.JobGroupName); CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule(job.CronExpression); var triggerKey = CreateTriggerKey(job.TriggerName, job.TriggerGroupName); ITrigger trigger = TriggerBuilder.Create().StartNow() .WithIdentity(job.TriggerName, job.TriggerGroupName) .ForJob(jobKey) .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .Build(); bool blxml = Xml.XmlJobManage.ModifyJobCronToXml(triggerKey, jobKey, trigger); if (blxml) { _scheduler.RescheduleJob(triggerKey, trigger); return(true); } } catch (Exception ex) { logger.Error(ex); } return(false); }
static IScheduler myscheduler;// = new StdSchedulerFactory(); public async void Start() { try { NameValueCollection properties = new NameValueCollection(); properties["quartz.scheduler.instanceName"] = "MyShedSend"; myscheduler = await new StdSchedulerFactory(properties).GetScheduler(); await myscheduler.Start(); CronScheduleBuilder shedall = CronScheduleBuilder .CronSchedule(cron_alltext); IJobDetail job2 = JobBuilder.Create <AllTextSender>() .WithIdentity("trigger2", "group2") .Build(); ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity("trigger2", "group2") .StartNow() .WithSchedule(shedall) .Build(); await myscheduler.RescheduleJob(trigger2.Key, trigger2); await myscheduler.ScheduleJob(job2, trigger2); } catch (Exception ex) { Console.WriteLine("class SendAllScheduler \n method Start \n" + ex.Message.ToString()); } }
public override bool RunJob(custom_job_infoes jobInfo) { //Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + $"bin/{jobInfo.DLLName}"); //var type = assembly.GetType(jobInfo.FullJobName); JobKey jobKey = KeyManager.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); if (!Scheduler.CheckExists(jobKey)) { IJobDetail job = JobBuilder.Create <JobItem>() .WithIdentity(jobKey) .UsingJobData(KeyManager.CreateJobDataMap("requestUrl", jobInfo.RequestUrl)) .Build(); CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); ITrigger trigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now.AddYears(-1)) .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .ForJob(jobKey) .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .Build(); Scheduler.ScheduleJob(job, trigger); //Task.Run(() => //{ // //执行更新任务所在节点信息 //}); } return(true); }
public void StartOrRestartSchedulerTrigger() { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); if (scheduler.IsStarted == false) { scheduler.Start(); } var jobIsRunning = scheduler.CheckExists(new JobKey(JobBackgroundRunExpirePolicyJobName)); if (jobIsRunning) { scheduler.UnscheduleJob(new TriggerKey(TriggerBackgroundRunExpirePolicyJobName)); } IJobDetail job = JobBuilder.Create <ExpirePolicyBackgroundJob>() .WithIdentity(new JobKey(JobBackgroundRunExpirePolicyJobName)) .Build(); ///CronExpression cexp = new CronExpression("0 30 12 1/1 * ? *"); // every day in 12:30 CronExpression cexp = new CronExpression("0 0/30 * 1/1 * ? *"); // every 30 minutes (just for test) CronScheduleBuilder cronSchedule1 = CronScheduleBuilder.CronSchedule(cexp); ITrigger trigger = TriggerBuilder.Create() .WithIdentity(TriggerBackgroundRunExpirePolicyJobName) .StartNow() .WithSchedule(cronSchedule1) .Build(); scheduler.ScheduleJob(job, trigger); }
private ITrigger GetUploadTrigger(IJobDetail jobDetail) { var builder = TriggerBuilder .Create() .ForJob(jobDetail) .WithDescription(string.Format(Resources.Trigger_for_job_0_1, jobDetail.Key.Name, jobDetail.Key.Group)) .WithIdentity( new TriggerKey( string.Format(Resources.Trigger_for_job_0_1, jobDetail.Key.Name, jobDetail.Key.Group), jobDetail.Key.Group)); if (upJobSimpleTriggerRadioButton.Checked) { var minutes = upJobHoursDateTimePicker.Value.Hour * 60; minutes += upJobMinutesDateTimePicker.Value.Minute; return(builder.WithSimpleSchedule(x => x .WithIntervalInMinutes(minutes) .RepeatForever()) .StartNow() .Build()); } return (builder.WithSchedule(CronScheduleBuilder.CronSchedule(upJobCronExpressionTextBox.Text)) .StartAt(upJobStartAtDateTimePicker.Value.ToUniversalTime()) .Build()); }
public long GetRunTime(string cron, int runTime) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown checked { try { CronScheduleBuilder val = CronScheduleBuilder.CronSchedule(cron); ICronTrigger val2 = (ICronTrigger)TriggerBuilder.Create().WithSchedule((IScheduleBuilder)(object)val).Build(); DateTimeOffset dateTimeOffset = DateTimeOffset.Now.Subtract(TimeSpan.FromMinutes(runTime)).ToLocalTime(); IList <DateTimeOffset> list = (IList <DateTimeOffset>)TriggerUtils.ComputeFireTimesBetween((IOperableTrigger)val2, (ICalendar)null, dateTimeOffset, DateTimeOffset.Now.ToLocalTime()); foreach (DateTimeOffset item in list) { long num = (long)Math.Round(item.AddMinutes(runTime).Subtract(DateTimeOffset.Now).TotalMilliseconds); if (num > 0 && num <= runTime * 60 * 1000) { return(num); } } } catch (Exception ex) { ProjectData.SetProjectError(ex); Exception ex2 = ex; log.Error((object)ex2); ProjectData.ClearProjectError(); } return(0L); } }
public void scheduler(Action act, string cron) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Expected O, but got Unknown try { JobDataMap val = new JobDataMap(); ((DirtyFlagMap <string, object>)(object) val).Add(RunnableJob.TASK_KEY, (object)act); string text = "job_" + Conversions.ToString(NextId()); JobKey val2 = new JobKey(text); JobDetailImpl val3 = (JobDetailImpl)JobBuilder.Create(typeof(RunnableJob)).UsingJobData(val).WithIdentity(val2) .Build(); CronScheduleBuilder val4 = CronScheduleBuilder.CronSchedule(cron); ICronTrigger val5 = (ICronTrigger)TriggerBuilder.Create().WithSchedule((IScheduleBuilder)(object)val4).Build(); _scheduler.ScheduleJob((IJobDetail)(object)val3, (ITrigger)(object)val5); } catch (Exception ex) { ProjectData.SetProjectError(ex); Exception ex2 = ex; log.Error((object)ex2); ProjectData.ClearProjectError(); } }
/// <summary> /// 添加job /// </summary> /// <param name="job_name"></param> /// <param name="job_group"></param> /// <returns></returns> public async Task <bool> AddJob(string job_name, string job_group, string job_cron, string job_value, string job_class_str) { var data = GetJobDataMapByStr(job_value); var jobclass = Type.GetType(job_class_str); //4、创建任务 var jobDetail = JobBuilder.Create(jobclass).WithIdentity(job_name, job_group).UsingJobData(data).Build(); //5.1 构建器 var builder = CronScheduleBuilder.CronSchedule(job_cron); //5.2 触发器 var trigger_builder = TriggerBuilder.Create(); //6、构建 var trigger = trigger_builder.WithIdentity(job_name, job_group) .ForJob(job_name, job_group) .WithSchedule(builder.WithMisfireHandlingInstructionFireAndProceed()) .Build(); //6、监听 AddListener(jobDetail); //7、将触发器和任务器绑定到调度器中 await _scheduler.ScheduleJob(jobDetail, trigger); return(GeTriggerState(job_name, job_group) == TriggerState.Normal); }
public static async void Start(IServiceProvider serviceProvider) { var configurationProvider = serviceProvider.GetRequiredService <IConfiguration>(); var scheduler = await StdSchedulerFactory.GetDefaultScheduler(); scheduler.JobFactory = serviceProvider.GetRequiredService <JobFactory>(); foreach (var job in GetJobsToRun(configurationProvider)) { var jobDetail = JobBuilder.Create(job.Type).Build(); var schedule = !string.IsNullOrWhiteSpace(job.CronExpression) ? (IScheduleBuilder)CronScheduleBuilder.CronSchedule(job.CronExpression) : SimpleScheduleBuilder.Create().WithIntervalInSeconds(DefaultStartIntervalSeconds).RepeatForever(); var trigger = TriggerBuilder.Create() .WithIdentity(job.Type.FullName) .WithSchedule(schedule) .StartNow() .Build(); await scheduler.ScheduleJob(jobDetail, trigger); } await scheduler.Start(); }
private IScheduleBuilder CreateScheduleWithCron(string cronExpression, TimeZoneInfo timeZone) { CronScheduleBuilder sb = CronScheduleBuilder.CronSchedule(cronExpression); sb.InTimeZone(timeZone); return(sb); }
public async Task StartAsync() { _scheduler = await _factory.GetScheduler().ConfigureAwait(false); await _scheduler.Start().ConfigureAwait(false); foreach (var service in _backgroundServices) { ITrigger trigger = TriggerBuilder.Create() .WithIdentity(service.Identity, service.Group) .WithSchedule(CronScheduleBuilder.CronSchedule(service.CronSchedule).InTimeZone(service.TimeZone)) .ForJob(service.Identity, service.Group).Build(); var type = service.GetType(); IJobDetail job = JobBuilder.Create(type) .WithIdentity(service.Identity, service.Group) .Build(); if (!await _scheduler.CheckExists(job.Key).ConfigureAwait(false)) { await _scheduler.ScheduleJob(job, trigger).ConfigureAwait(false); } if (service.DoStartNow) { await _scheduler.TriggerJob(new JobKey(service.Identity, service.Group)).ConfigureAwait(false); } } }
public async Task <TriggerPropertyBundle> LoadExtendedTriggerProperties(ConnectionAndTransactionHolder conn, TriggerKey triggerKey) { using (var cmd = DbAccessor.PrepareCommand(conn, AdoJobStoreUtil.ReplaceTablePrefix(StdAdoConstants.SqlSelectCronTriggers, TablePrefix, SchedNameLiteral))) { DbAccessor.AddCommandParameter(cmd, "triggerName", triggerKey.Name); DbAccessor.AddCommandParameter(cmd, "triggerGroup", triggerKey.Group); using (var rs = await cmd.ExecuteReaderAsync().ConfigureAwait(false)) { if (await rs.ReadAsync().ConfigureAwait(false)) { string cronExpr = rs.GetString(AdoConstants.ColumnCronExpression); string timeZoneId = rs.GetString(AdoConstants.ColumnTimeZoneId); CronScheduleBuilder cb = CronScheduleBuilder.CronSchedule(cronExpr); if (timeZoneId != null) { cb.InTimeZone(TimeZoneUtil.FindTimeZoneById(timeZoneId)); } return(new TriggerPropertyBundle(cb, null, null)); } } throw new InvalidOperationException("No record found for selection of Trigger with key: '" + triggerKey + "' and statement: " + AdoJobStoreUtil.ReplaceTablePrefix(StdAdoConstants.SqlSelectCronTriggers, TablePrefix, SchedNameLiteral)); } }
private static ITrigger CreateTrigger(Task task) { string[] components = task.Schedule.CronExpression.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (components.Length < 5) { throw new Exception("Invalid expression. Should have no less than 5 components."); } //из http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontrigger.html //Support for specifying both a day-of-week and a day-of-month value is not complete (you must currently use the '?' character in one of these fields). if (components[2] != "?" && components[4] != "?") { if (components[2] == "*") { components[2] = "?"; } else { components[4] = "?"; } } //в бд лежит без секунд а кварц поддерживает с секундами только так что 0 прибавляем string cronExprFixed = "0 " + string.Join(" ", components); return(TriggerBuilder.Create() .WithIdentity(GetTriggerKey(task)) .WithSchedule(CronScheduleBuilder.CronSchedule(cronExprFixed)) .Build()); }
public static void Start() { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler().Result; scheduler.Start(); IJobDetail firstJob = JobBuilder.Create <QueryExecuteJob>().Build(); ITrigger firstTrigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartNow() .WithSchedule(CronScheduleBuilder.CronSchedule("0 30 9 1,5,10,15,20,25 MAY,DEC ? *")) .Build(); IJobDetail secondJob = JobBuilder.Create <ProcedureExecuteJob>().Build(); ITrigger secondTrigger = TriggerBuilder.Create() .WithIdentity("trigger2", "group2") .StartNow() .WithSchedule(CronScheduleBuilder.CronSchedule(" 0 0 0 ? * FRI *")) .Build(); scheduler.ScheduleJob(firstJob, firstTrigger); scheduler.ScheduleJob(secondJob, secondTrigger); }
private static IScheduleBuilder BuildToRunOnNthMinutesOfAnHour(int minutes) { // http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-06.html var cronExpression = $"0 0/{minutes} * * * ?"; return(CronScheduleBuilder.CronSchedule(cronExpression) .WithMisfireHandlingInstructionDoNothing()); }
private static void Schedule(IScheduler sched, Type type, IConfiguration config) { IScheduleJob scheduleJob = (IScheduleJob)Activator.CreateInstance(type); // define the job and tie it IJobDetail job = JobBuilder.Create(type) .WithIdentity(type.Name) .Build(); sched.PauseJob(job.Key); String cron = config.GetSection($"Scheduler:Crons:{type.Name}").Value; // Update trigger if (String.IsNullOrEmpty(cron)) { Console.WriteLine(scheduleJob.ToString() + " pasued."); (scheduleJob.ToString() + " pasued.").Log(); } else { CronScheduleBuilder cronBuilder = CronScheduleBuilder.CronSchedule(cron); ICronTrigger cronTrigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity(type.Name + "Trigger") .WithSchedule(cronBuilder) .ForJob(job) .Build(); IReadOnlyCollection <ITrigger> triggers = sched.GetTriggersOfJob(job.Key).Result; ICronTrigger currentTrigger = triggers.FirstOrDefault(x => x.GetType().Equals(typeof(CronTriggerImpl))) as ICronTrigger; if (currentTrigger == null) { sched.ScheduleJob(job, cronTrigger); } else if (currentTrigger.CronExpressionString != cronTrigger.CronExpressionString) { sched.RescheduleJob(cronTrigger.Key, cronTrigger); } sched.ResumeJob(job.Key); Console.WriteLine(scheduleJob.ToString() + " scheduled: " + cronTrigger.CronExpressionString); (scheduleJob.ToString() + " scheduled: " + cronTrigger.CronExpressionString).Log(); try { scheduleJob.ResumeJob(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); ex.Log(); } } }
public bool ModifyJobCron(Customer_JobInfo jobInfo) { var scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); var triggerKey = TaskSchedulerHelper.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 void Start() { scheduler.Start(); ITrigger trigger = TriggerBuilder.Create().WithIdentity("triggerName0", "goupName3").WithSchedule (CronScheduleBuilder.CronSchedule("*/2 * * * * ?").WithMisfireHandlingInstructionDoNothing()).Build(); scheduler.ScheduleJob(job, trigger); }
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); }
private static ITrigger DefineCronTrigger(string identity, DateTime startTime, string cronEx) { var monthlyTrigger = TriggerBuilder.Create() .WithIdentity(identity, Guid.NewGuid().ToString()) .StartAt(startTime) .WithSchedule(CronScheduleBuilder.CronSchedule(cronEx)) .Build(); return(monthlyTrigger); }