public static void Start() { //0 15 10 * * ? * 每天上午10:15触发 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); //从工厂中获取一个调度器实例化 scheduler.Start(); //开始调度器 IJobDetail job = JobBuilder.Create <ContractJob>().Build(); //创建一个作业 //ITrigger trigger = TriggerBuilder.Create() // .WithSimpleSchedule(t => // t.WithIntervalInSeconds(5) //触发执行,5s一次 // .RepeatForever()) //重复执行 // .Build(); //scheduler.ScheduleJob(job, trigger); //把作业,触发器加入调度器。 //每天上午10:15触发 ITrigger trigger = TriggerBuilder.Create().WithCronSchedule("0 15 10 ? * *") .WithIdentity("ContractJob", "group1") .StartNow() .Build(); scheduler.ScheduleJob(job, trigger); //把作业,触发器加入调度器。 }
public static async System.Threading.Tasks.Task StartAsync() { try { var scheduler = await StdSchedulerFactory.GetDefaultScheduler(); if (!scheduler.IsStarted) { await scheduler.Start(); } var job = JobBuilder.Create <ExecuteTaskServiceCallJob>() .WithIdentity("ExecuteTaskServiceCallJob1", "group1") .Build(); var trigger = TriggerBuilder.Create() .WithIdentity("ExecuteTaskServiceCallTrigger1", "group1") .WithCronSchedule(ScheduleCronExpression) .Build(); await scheduler.ScheduleJob(job, trigger); } catch (Exception ex) { } }
public static void ExecuteWithInterval(int second, Action action) { //scheduler IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); //more job { //job JobDetailImpl job = new JobDetailImpl("zszTimer", typeof(IntervalJob)); job.JobDataMap.Add("dosth", action); //任务数据 //trigger IMutableTrigger trigger = CalendarIntervalScheduleBuilder.Create() .WithIntervalInSeconds(second).Build(); trigger.Key = new TriggerKey("zszTrigger"); //watch scheduler.ScheduleJob(job, trigger); } //start scheduler.Start(); }
static void Main(string[] args) { try { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); AddJob(scheduler, new FacebookJob(), "10 0 * * * ?"); AddJob(scheduler, new NetGroupsUpdateJob(), "20 0 */8 * * ?"); AddJob(scheduler, new BlogsUpdateJob(), "20 0 */8 * * ?"); while (true) { Thread.Sleep(1000 * 31337); } //scheduler.Shutdown(); } catch (SchedulerException se) { Console.WriteLine(se); } }
// <summary> /// 任务工厂 /// </summary> /// <typeparam name="T">工作类</typeparam> /// <param name="DetailName">工作名称</param> /// <param name="TriggerName">触发器名称</param> /// <param name="Minute">多长秒触发一次</param> /// <param name="Group">组别</param> public static async void JobFactory <T>(string DetailName, string TriggerName, int Minute, string GroupName = "Group") where T : IJob { // 创建调度器 scheduler = await StdSchedulerFactory.GetDefaultScheduler(); // 启动 await scheduler.Start(); // 描述工作 var jobDetail = new JobDetailImpl(DetailName, GroupName, typeof(T)); // var jobDetails = JobBuilder.Create<T>().WithIdentity(DetailName,GroupName).Build(); //触发器 ISimpleTrigger trigger = new SimpleTriggerImpl(TriggerName, GroupName, DateTime.Now, null, SimpleTriggerImpl.RepeatIndefinitely, TimeSpan.FromSeconds(Minute)); // var triggers = TriggerBuilder.Create().WithIdentity(TriggerName, GroupName).WithCronSchedule("00 15 10 * *?*").Build(); //执行 await scheduler.ScheduleJob(jobDetail, trigger); }
public Service() { scheduler = StdSchedulerFactory.GetDefaultScheduler(); index = 1; newIndex = 1; updDisp = false; updDone = false; intervalJobKey = new JobKey("iJK"); anotherIntervalJobKey = new JobKey("aIJK"); scheduler.Start(); scheduler.ListenerManager.AddJobListener(this, OrMatcher <JobKey> .Or(KeyMatcher <JobKey> .KeyEquals <JobKey>(intervalJobKey), KeyMatcher <JobKey> .KeyEquals <JobKey>(anotherIntervalJobKey))); startIntervalJob(1); startAnotherIntervalJob(5); }
public async Task <object> RunJob(string jobName, string cron = "30 0/1 * 1/1 * ? *") { // get a scheduler IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler(); if (!scheduler.IsStarted) { await scheduler.Start(); } IJobDetail job = JobBuilder.Create <WriteLogJob>() .WithIdentity("MVCTestHomeIndexJob_" + jobName, "MVCTestHomeIndexJobGroup") .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("MVCTestHomeIndexTrigger_" + jobName, "MVCTestHomeIndexJobGroup") .StartNow() //.WithCronSchedule(cron) .WithSimpleSchedule(x => x .WithIntervalInMinutes(1) .RepeatForever()) .Build(); try { await scheduler.ScheduleJob(job, trigger); string result = string.Format("Job name: {0}, State: {1}, Next Fire Time: {2}", job.Key.Name, scheduler.GetTriggerState(trigger.Key).Result.ToString(), trigger.GetNextFireTimeUtc().Value.LocalDateTime.ToString("dd/MM/yyyy HH:mm:ss")); //await Log.WriteTextAsync("Job added"); //await Log.WriteJobInfo(); return(Json(new { code = 1, result = result }, JsonRequestBehavior.AllowGet)); } catch (SchedulerException ex) { return(Json(new { code = 1, result = "Error: " + ex.ToString() }, JsonRequestBehavior.AllowGet)); } }
private void ConfigureQuartz() { //Crearemos job para expirar todos los productos que caduquen cada dia a las 12 de la noche. try { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler().Result; scheduler.Start(); IJobDetail job = JobBuilder.Create <ExpirationJob>() .WithIdentity("ExpirationJob", "InventoryJobs") .Build(); DateTime now = DateTime.UtcNow; //Hora cuando empezará la job DateTime startDate = new DateTime(now.Year, now.Month, now.Day + 1, 0, 0, 0); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("ExpirationTrigger", "InventoryTriggers") .StartAt(startDate) //.StartNow() .WithSimpleSchedule(x => x .WithIntervalInHours(24) .RepeatForever()) .Build(); scheduler.ScheduleJob(job, trigger); } catch (Exception e) { Logger.Error("Fallo al iniciar quartz. || Exception: " + JsonConvert.SerializeObject(e), "api/v1/output"); } }
static void Main(string[] args) { //从工厂中获取一个调度器实例化 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); //开启调度器 scheduler.Start(); //JobDetail //JobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。 //创建作业 IJobDetail job1 = JobBuilder.Create <TestJob1>() .WithIdentity("myJob1", "group1") .Build(); IJobDetail job2 = JobBuilder.Create <TestJob2>() .WithIdentity("myJob2", "group2") .UsingJobData("jobSays", "helloworld") .UsingJobData("myFloatValue", 3.141f) .Build(); //Trigger代表一个调度参数的配置,什么时候去调 ITrigger tigger1 = TriggerBuilder.Create() .WithIdentity("tiggerName1", "tiggerGroup1") .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).RepeatForever()) .StartAt(DateTime.Now.AddSeconds(5)) .EndAt(DateTime.Now.AddSeconds(20)) .Build(); ITrigger tigger2 = TriggerBuilder.Create().WithIdentity("tiggerName2", "tiggerGroup2").WithSimpleSchedule (x => x.WithIntervalInSeconds(1).WithRepeatCount(10)).Build(); //AOP切入 scheduler.ListenerManager.AddJobListener(new MyAopListener(), GroupMatcher <JobKey> .AnyGroup()); //把作业,触发器加入调度器。 //Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。 scheduler.ScheduleJob(job2, tigger2); scheduler.ScheduleJob(job1, tigger1); }
public static void Start() { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); IJobDetail job = JobBuilder.Create <Jobclass>().Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInMinutes(3) .RepeatForever()) .Build(); IJobDetail job1 = JobBuilder.Create <JobFeeClass>().Build(); ITrigger trigger1 = TriggerBuilder.Create() .WithIdentity("trigger2", "group2") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInMinutes(45) .RepeatForever()) .Build(); IJobDetail job2 = JobBuilder.Create <JobTRClass>().Build(); ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity("trigger3", "group3") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInHours(1) .RepeatForever()) .Build(); scheduler.ScheduleJob(job, trigger); scheduler.ScheduleJob(job1, trigger1); scheduler.ScheduleJob(job2, trigger2); }
private async void btnStartJob_Click(object sender, RoutedEventArgs e) { try { // Grab the Scheduler instance from the Factory IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler(); // and start it off await scheduler.Start(); IJobDetail job = JobBuilder.Create <MonitorJob>() .WithIdentity("job1", "group1") .Build(); // Trigger the job to run now, and then repeat every 10 seconds ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInSeconds(10) //.WithIntervalInHours(1) .RepeatForever()) .Build(); await scheduler.ScheduleJob(job, trigger); // some sleep to show what's happening Thread.Sleep(TimeSpan.FromSeconds(3)); // and last shut down the scheduler when you are ready to close your program await scheduler.Shutdown(); } catch (SchedulerException se) { Console.WriteLine(se); } }
static void Main(string[] args) { #region Quartz.Net IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); //从工厂中获取一个调度器实例化 scheduler.Start(); //开始调度器 IJobDetail job = JobBuilder.Create <TotalJob>().Build(); //创建一个作业 ITrigger trigger = TriggerBuilder.Create().WithSimpleSchedule(t => t.WithIntervalInSeconds(5).RepeatForever()).Build(); //触发执行 5s一次 scheduler.ScheduleJob(job, trigger); Console.ReadKey(); #endregion #region HttpWebRequest //HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com"); //using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse()) //{ // //response.StatusCode 404 500 200 // if (response.StatusCode == HttpStatusCode.OK) // { // using (Stream stream = response.GetResponseStream()) // { // using(StreamReader reader=new StreamReader(stream)) // { // string html = reader.ReadToEnd(); // Console.WriteLine(html); // } // } // } // else // { // Console.WriteLine("服务器返回错误:" + response.StatusCode); // } //} //Console.ReadKey(); #endregion }
public async Task <Result <JobDto> > TriggerJob <TJob>(JobDto jobDto) where TJob : IJob { Result <JobDto> result; try { _scheduler = await StdSchedulerFactory.GetDefaultScheduler(); await _scheduler.Start(); _jobName = $"{typeof(TJob).FullName}-{jobDto.Guid}"; _job = JobBuilder.Create <TJob>() .WithIdentity($"{_jobName}.{jobDto.Guid}") .StoreDurably(true) .Build(); _cronTrigger = GenerateCronTrigger(jobDto, false, _jobName); _triggerBuilder = TriggerBuilder.Create(); _trigger = _triggerBuilder .ForJob(_job.Key) .WithCronSchedule(jobDto.JobDataDtoList.FirstOrDefault().TimerRegex) .WithIdentity($"{_jobName}.{jobDto.Guid}") .Build(); _dateTimeOffset = await _scheduler.ScheduleJob(_job, _cronTrigger); jobDto.LastRunTime = _dateTimeOffset.UtcDateTime; result = new Result <JobDto>(jobDto); } catch (Exception ex) { result = new Result <JobDto>(false, $"An error occured while triggering job. Ex : {ex.ToString()}"); } return(result); }
private void InitScheduledJobs() { // Quartz.Net initialization log.Debug("Starting Quartz.Net engine"); scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); #region NotificacionDeNuevasBoletasDeConsolidacion IJobDetail jobNotificacionDeNuevasBoletasDeConsolidacion = JobBuilder.Create <NotificacionDeNuevasBoletasDeConsolidacion>() .Build(); ITrigger triggerNotificacionDeNuevasBoletasDeConsolidacion = TriggerBuilder.Create() .WithDailyTimeIntervalSchedule(x => x .WithIntervalInHours(24) .OnEveryDay() .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(23, 0))) // Corre todos los dias a las 11PM .Build(); scheduler.ScheduleJob(jobNotificacionDeNuevasBoletasDeConsolidacion, triggerNotificacionDeNuevasBoletasDeConsolidacion); #endregion #region NotificacionDeFaltaDeRegistroDeAsistencia IJobDetail jobNotificacionDeFaltaDeRegistroDeAsistencia = JobBuilder.Create <NotificacionDeFaltaDeRegistroDeAsistencia>() .Build(); ITrigger triggerNotificacionDeFaltaDeRegistroDeAsistencia = TriggerBuilder.Create() .WithCronSchedule("0 0,30 * * * ?") // Corre cada hora y cada minuto 30 de cada hora .Build(); scheduler.ScheduleJob(jobNotificacionDeFaltaDeRegistroDeAsistencia, triggerNotificacionDeFaltaDeRegistroDeAsistencia); #endregion }
public void Start() { logger.Info("Scheduler started..."); if (scheduler == null || scheduler.IsShutdown) { scheduler = StdSchedulerFactory.GetDefaultScheduler(); } // analyze JobKey analyzeKey = new JobKey(CRAWL_ANALYZE_JOB_KEY, GROUP_UPLOAD); IJobDetail crawlAnalyzeJob = JobBuilder.Create <FreeBtcJob>().WithIdentity(analyzeKey).Build(); //crawlAnalyzeJob.JobDataMap.Add("DELAY", maxDelay); ITrigger triggerJob = null; //if (runOnce) //{ // triggerJob = TriggerBuilder.Create().StartNow().WithIdentity(CRAWL_ANALYZE_JOB_KEY, GROUP_UPLOAD) // .WithSimpleSchedule() // .Build(); //} //else //{ string cronExpress = ""; triggerJob = TriggerBuilder.Create().StartNow().WithIdentity(CRAWL_ANALYZE_JOB_KEY, GROUP_UPLOAD) //.WithCronSchedule(cronExpress) .WithSimpleSchedule() .Build(); //} scheduler.ScheduleJob(crawlAnalyzeJob, triggerJob); scheduler.Start(); }
public static void StartJobSchedule <T>(string cronExpression, string jobName, string groupName) where T : IJob { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); if (scheduler.CheckExists(new JobKey(jobName, groupName))) { throw new Exception("Já existe job agendado."); } IJobDetail job = JobBuilder.Create <T>() .WithIdentity(jobName, groupName) .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trg_" + jobName, groupName) .WithPriority(1) .WithCronSchedule(cronExpression) .Build(); scheduler.ScheduleJob(job, trigger); }
public static bool Stop(ArchiveSavedJob job) { var logger = LogManager.GetCurrentClassLogger(); try { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); TriggerKey key = new TriggerKey(job.Name, job.Group); scheduler.UnscheduleJob(key); scheduler.Shutdown(); logger.Info("Задание - " + key.Name + ": " + key.Group + " остановлено !"); return(true); } catch (Exception e) { logger.Error("Ошибка -" + e.Message); } return(false); }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); try { String start_one = WebConfigurationManager.AppSettings["update_data_at_one"]; IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); IJobDetail job = JobBuilder.Create <QuartzSchedule>() .WithIdentity("jobName", "jobGroup") .Build(); var trigger = TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithCronSchedule(start_one) .ForJob("jobName", "jobGroup") .Build(); scheduler.ScheduleJob(job, trigger); } catch { } }
static async Task Main(string[] args) { var scheduler = await StdSchedulerFactory.GetDefaultScheduler(); await scheduler.Start(); var job = JobBuilder .CreateForAsync <WanikaniStatsJob>() .Build(); var trigger = TriggerBuilder .Create() //.StartNow() .StartAt(DateTime.UtcNow.Date.AddDays(1)) .WithSimpleSchedule(builder => builder .WithIntervalInHours(24) .RepeatForever()) .Build(); await scheduler.ScheduleJob(job, trigger); await Task.Delay(-1); }
public static void Start() { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); IJobDetail job = JobBuilder.Create <Foo>().Build(); //default ITrigger trigger = TriggerBuilder.Create() .StartNow() .WithSimpleSchedule(x => x .WithIntervalInSeconds(30) .RepeatForever()) .Build(); //ITrigger trigger = TriggerBuilder.Create() //.StartNow() //.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(11, 11)) // execute job daily at 9:30 //.Build(); scheduler.ScheduleJob(job, trigger); //scheduler.Shutdown(); }
/// <summary> /// CronSchedule 根据字符串来替代之前的简单计划表,日历计划表,每天计划表 /// </summary> public static void Fun10() { var sche = StdSchedulerFactory.GetDefaultScheduler(); sche.Start(); var job = JobBuilder.Create <MyJob>() .Build(); //秒 分 时 天 月 年 周 //1. 天或者周必须有一个是?(?表示模糊) //2. * 表示所有值即,秒位为*表示每秒执行一次 //3. - 表示范围,分钟位为10-12表示每个小时的10,11,12分执行一次 //4. , 表示每个值即,分钟位为10,20,30表示每个小时的10,20,30分执行一次 //5. / 表示递增,秒位为0/5表示0,5,10,15,20,25,30,35,40,45,50,55秒执行一次 //例子: // * * * * * ? => 每秒执行一次 // 0/5 * * * * ? => 5s执行一次 // 0 * * * * ? => 1min执行一次 // 0 0 1 * * ? => 每个月1号执行一次 // 地址:https://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontrigger.html var trigger = TriggerBuilder.Create().StartNow().WithCronSchedule("0/1 * * * * ?").Build(); sche.ScheduleJob(job, trigger); }
public void Run() { this._scheduler = StdSchedulerFactory.GetDefaultScheduler(); this._scheduler.Start(); #region Email job(s) IJobDetail EmailJob = JobBuilder.Create <EmailSendTask>() .WithIdentity("EmailSendJob", "Email") .Build(); ITrigger EmailTrigger = TriggerBuilder.Create() .WithIdentity("EmailTrigger", "Email") .StartNow() .WithCronSchedule("0 59 23 1/1 * ? *") .Build(); this._scheduler.ScheduleJob(EmailJob, EmailTrigger); #endregion }
public static void Start() { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); IJobDetail monthlyBirthdayJob = JobBuilder.Create <MonthlyBirthdayJob>().Build(); IJobDetail dailyBirthdayJob = JobBuilder.Create <DailyBirthdayJob>().Build(); IJobDetail dailyVacationJob = JobBuilder.Create <RetireVacationsJob>().Build(); ITrigger monthlyBirthdayTrigger = TriggerBuilder.Create() .WithSchedule(CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(1, 8, 0)) .Build(); ITrigger dailyVacationTrigger = TriggerBuilder.Create() .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(2, 0)) .Build(); ITrigger dailyBirthdayTrigger = TriggerBuilder.Create() .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(2, 0)) .Build(); scheduler.ScheduleJob(monthlyBirthdayJob, monthlyBirthdayTrigger); scheduler.ScheduleJob(dailyBirthdayJob, dailyBirthdayTrigger); scheduler.ScheduleJob(dailyVacationJob, dailyVacationTrigger); }
public async void Star() { try { myscheduler = await StdSchedulerFactory.GetDefaultScheduler(); await myscheduler.Start(); CronScheduleBuilder shed = CronScheduleBuilder .CronSchedule(cron_expression); //48,49,50,51,52 10,11,12,13 ? * MON,TUE,WED *"); IJobDetail job = JobBuilder.Create <TextSender>() .WithIdentity("job1", "group1") .Build(); ITrigger trigger = TriggerBuilder.Create() // создаем триггер .WithIdentity("trigger1", "group1") // идентифицируем триггер с именем и группой .StartNow() // запуск сразу после начала выполнения .WithSchedule(shed) // настраиваем выполнение действия // через 1 минуту // бесконечное повторение .Build(); // создаем триггер /// начинаем выполнение работы //String newCronExpression = cron_expression; // the desired cron expression await myscheduler.RescheduleJob(trigger.Key, trigger); await myscheduler.ScheduleJob(job, trigger); } catch (Exception ex) { Console.WriteLine("class SenderSheduler \r method Start \r" + ex.Message); } }
public static void InitJobs(PlayerHelper player, string strtime) { try { var strtimes = strtime.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info }; IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); for (int i = 0; i < strtimes.Length; i += 2) { IJobDetail job = JobBuilder.Create <PlayMusicJob>().WithIdentity("job" + i.ToString(), "group1").Build(); job.JobDataMap.Add("playerHelper", player); ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger" + i.ToString(), "group2").ForJob("job" + i.ToString(), "group1") .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(int.Parse(strtimes[i]), int.Parse(strtimes[i + 1]))).Build(); scheduler.ScheduleJob(job, trigger); } }catch (Exception er) { throw er; } }
static void Schedule() { int naggingInterval; using (var scope = Container.BeginLifetimeScope()) { var settingsService = scope.Resolve <ISettingsService>(); naggingInterval = settingsService.GetSetting <int>("NaggingInterval"); } var scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); var job = JobBuilder.Create <JobRunner>() .WithIdentity("naggerJob") .Build(); var trigger = TriggerBuilder.Create() .WithIdentity("naggerJob") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInMinutes(naggingInterval) .RepeatForever()) .Build(); var nightlyJob = JobBuilder.Create <NightlyJob>().WithIdentity("nightlyJob").Build(); var nightlyTrigger = TriggerBuilder.Create() .WithIdentity("nightlyJob") .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(23, 55)) .Build(); scheduler.ScheduleJob(job, trigger); scheduler.ScheduleJob(nightlyJob, nightlyTrigger); }
public static async void Start(int callerId, string callerNumber, string callerPassword) { Caller caller = Caller.Instance(); caller.CallerId = callerId.ToString(); caller.CallerNumber = callerNumber.ToString(); caller.CallerPassword = callerPassword.ToString(); IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler(); await scheduler.Start(); IJobDetail job = JobBuilder.Create <ReapetedTask>().Build(); ITrigger trigger = TriggerBuilder.Create() // создаем триггер //для каждого телефона нужен свои группа и триггер. При одинаковых триггирах и группах вызывает исключение что такой таск уже запущен. .WithIdentity("trigger" + callerId.ToString(), "group" + callerId.ToString()) // идентифицируем триггер с именем и группой .StartNow() // запуск сразу после начала выполнения .WithSimpleSchedule(x => x // настраиваем выполнение действия .WithIntervalInSeconds(4) // через 4 секунлы .RepeatForever()) // бесконечное повторение .Build(); // создаем триггер await scheduler.ScheduleJob(job, trigger); // начинаем выполнение работы }
public ServiceCreator() { Initialize(); Scheduler = StdSchedulerFactory.GetDefaultScheduler(); IJobDetail customJob = JobBuilder.Create <CustomJob>() .WithIdentity("CustomJob", "EncuentrameGroup") .Build(); ITrigger customJobTrigger = TriggerBuilder.Create() .WithIdentity("CustomJobTrigger", "EncuentrameGroup") .StartAt(DateTimeOffset.Now.AddSeconds(30)) .WithSimpleSchedule(x => x .WithIntervalInSeconds(60) .RepeatForever()) .Build(); Scheduler.ScheduleJob(customJob, customJobTrigger); }
/// <summary> /// WithCronSchedule的哑火策略 /// 哑火策略:WithMisfireHandlingInstructionFireAndProceed /// 哑火的任务合并到一次执行,下次正常执行 /// /// 哑火策略:WithMisfireHandlingInstructionIgnoreMisfires /// 追赶执行哑火的任务,下次正常执行 /// /// 哑火策略:WithMisfireHandlingInstructionDoNothing /// 什么都不做,下次正常执行 /// </summary> public static void Fun6() { var scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); //将键值对传给定时器 var job = JobBuilder.Create <MyJob>() .Build(); var trigger = TriggerBuilder.Create() .StartAt(DateBuilder.DateOf(7, 0, 0)) .WithCronSchedule("0 0 7-20 ? * MON-FRI", //工作日8AM - 8PM每小时执行一次 //哑火的任务合并到一次执行,下次正常执行 //m => m.WithMisfireHandlingInstructionFireAndProceed() //追赶执行哑火的任务,下次正常执行 //m => m.WithMisfireHandlingInstructionIgnoreMisfires() //什么都不做,下次正常执行 m => m.WithMisfireHandlingInstructionDoNothing() ) .Build(); scheduler.ScheduleJob(job, trigger); }
/// <summary> /// 将类型从Job队列中删除 /// </summary> /// <param name="type">类型</param> /// <param name="job">job</param> public static void DelteToQuartz(Type type, TbJob job) { var obj = Activator.CreateInstance(type); if (!(obj is ISchedulingJob)) { return; } var tmp = obj as ISchedulingJob; var cancel = tmp.CancellationSource; var name = job.Name;//tmp.JobName; if (!Dictionary.ContainsKey(name)) { Logger.Warn($"->任务模块{name}-{job.Version}不存在"); return; } var jobKey = Dictionary[name]; StdSchedulerFactory.GetDefaultScheduler(cancel.Token).Result.DeleteJob(jobKey, cancel.Token); Dictionary.Remove(name); Logger.Info($"->任务模块{name}-{job.Version}被删除..."); }