public static void ScheduleWeeklyJob <TJob>(this IScheduler scheduler, DayOfWeek weekDay, int hour, int minute) where TJob : IJob { ScheduleJob <TJob>( scheduler, trigger => trigger.WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(weekDay, hour, minute)).Build() ); }
private static void RegisterHcMaximumAllowedCheck() { var jobKey = new JobKey("HcMaximumAllowedCheckJob"); var job = sched.GetJobDetail(jobKey); if (job == null) { // define the job and tie it to our HelloJob class job = JobBuilder.Create <HcMaximumAllowedCheckJob>() .WithIdentity(jobKey) .Build(); var triggerKey = new TriggerKey("HcMaximumAllowedCheckJob"); // Trigger the job to run now, and daily at midnight ITrigger trigger = TriggerBuilder.Create() .WithIdentity(triggerKey) .StartNow() .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 8, 0).WithMisfireHandlingInstructionFireAndProceed()) .Build(); sched.ScheduleJob(job, trigger); } }
public IActionResult SendEmailBySelectWeekDayTime(SendEmailBySelectWeekDayTimeDto model) { try { if (!ModelState.IsValid) { feachEnums(); return(View()); } var cron = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(model.DayOfWeek, model.Time.Hour, model.Time.Minute).Build() as CronTriggerImpl; var lastChar = cron.CronExpressionString[cron.CronExpressionString.Length - 1];// get dayofweek ConvertWeekDayToWeekStrName(cron, lastChar); RecurringJob.AddOrUpdate("SendEmailBySelectWeekDayTime", () => _hanfireJobs.AccountingAffiliateAmountSell(), cron.CronExpressionString, TimeZoneInfo.Local); feachEnums(); ViewBag.SuccessMessage = SuccessMessage; return(View("Index")); } catch (Exception ex) { ViewBag.ErrorMessage = ErrorMessage + ex.Message; return(View("Index")); } }
public IActionResult BackUpFromDatabase(BackUpDatabaseDto model) { try { if (!ModelState.IsValid) { feachEnums(); return(View()); } var cron = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(model.DayOfWeek, model.Time.Hour, model.Time.Minute).Build() as CronTriggerImpl; var lastChar = cron.CronExpressionString[cron.CronExpressionString.Length - 1];// get dayofweek ConvertWeekDayToWeekStrName(cron, lastChar); RecurringJob.AddOrUpdate("BackUpFromDatabase" + model.DatabaseName.ToString(), () => _hanfireJobs.BackupFromDataBase(model.DatabaseName), cron.CronExpressionString, TimeZoneInfo.Local); feachEnums(); ViewBag.SuccessMessage = SuccessMessage; return(View("Index")); } catch (Exception ex) { ViewBag.ErrorMessage = ErrorMessage + ex.Message; return(View("Index")); } }
private TriggerBuilder AddWeekly(TriggerBuilder triggerBuilder, ScheduleModel scheduler) { var startTime = scheduler.StarTime; return(triggerBuilder.WithSchedule( CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(startTime.DayOfWeek, startTime.Hour, startTime.Minute))); }
private void CreateDefaultSettingsPage(string baseUrl) { var defaultSettings = new PlexRequestSettings { RequireTvShowApproval = true, RequireMovieApproval = true, SearchForMovies = true, SearchForTvShows = true, BaseUrl = baseUrl ?? string.Empty, CollectAnalyticData = true, }; var s = new SettingsServiceV2 <PlexRequestSettings>(new SettingsJsonRepository(new DbConfiguration(new SqliteFactory()), new MemoryCacheProvider())); s.SaveSettings(defaultSettings); var cron = (Quartz.Impl.Triggers.CronTriggerImpl)CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Friday, 7, 0).Build(); var scheduled = new ScheduledJobsSettings { PlexAvailabilityChecker = 60, SickRageCacher = 60, SonarrCacher = 60, CouchPotatoCacher = 60, StoreBackup = 24, StoreCleanup = 24, UserRequestLimitResetter = 12, PlexEpisodeCacher = 12, RecentlyAddedCron = cron.CronExpressionString, // Weekly CRON at 7 am on Mondays }; var scheduledSettings = new SettingsServiceV2 <ScheduledJobsSettings>(new SettingsJsonRepository(new DbConfiguration(new SqliteFactory()), new MemoryCacheProvider())); scheduledSettings.SaveSettings(scheduled); }
private void CreateDisconnectFixJob() { var schedule = CronScheduleBuilder .WeeklyOnDayAndHourAndMinute( this.disconnectWeeklyTime.DayOfWeek.ToDayOfWeek(), this.disconnectWeeklyTime.Time.Hour, this.disconnectWeeklyTime.Time.Minute) .InTimeZone(TimeZoneInfo.Utc) .WithMisfireHandlingInstructionFireAndProceed(); var jobKey = new JobKey("session-disconnect", "service"); var trigger = TriggerBuilder .Create() .WithIdentity(jobKey.Name, jobKey.Group) .WithSchedule(schedule) .Build(); var createJob = new CreateJob( this.Endpoint, new DisconnectSession(this.NewGuid(), this.TimeNow()), jobKey, trigger, this.NewGuid(), this.TimeNow()); this.Send(createJob, new Address(nameof(Scheduler))); this.Logger.LogInformation( LogId.Component, $"Created {nameof(DisconnectSession)} for " + $"{this.disconnectWeeklyTime.DayOfWeek.ToDayOfWeek()}s " + $"{this.disconnectWeeklyTime.Time.Hour:D2}:" + $"{this.disconnectWeeklyTime.Time.Minute:D2} UTC."); }
private void ConfigureScheduler() { var schedFact = new StdSchedulerFactory(); sched = schedFact.GetScheduler().Result; var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Israel Standard Time"); var weeklyJob = new JobDetailImpl("WeeklyJob", null, typeof(WeeklyJob)); var weeklyCronScheduleBuilder = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Sunday, 0, 0) .InTimeZone(timeZoneInfo); var weeklyTrigger = TriggerBuilder.Create() .StartNow() .WithSchedule(weeklyCronScheduleBuilder) .Build(); sched.ScheduleJob(weeklyJob, weeklyTrigger); var monthlyJob = new JobDetailImpl("MonthlyJob", null, typeof(MonthlyJob)); var monthlyCronScheduleBuilder = CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(1, 0, 0) .InTimeZone(timeZoneInfo); var monthlyTrigger = TriggerBuilder.Create() .StartNow() .WithSchedule(monthlyCronScheduleBuilder) .Build(); sched.ScheduleJob(monthlyJob, monthlyTrigger); sched.Start(); }
private void btnTest1_Click(object sender, EventArgs e) { // construct a scheduler factory ISchedulerFactory schedFact = new StdSchedulerFactory(); // get a scheduler IScheduler sched = schedFact.GetScheduler(); IJobDetail myJob = JobBuilder.Create <HelloJob>() .WithIdentity("myJob", "group1") .Build(); //Build a trigger that will fire every other minute, between 8am and 5pm, every day: ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithCronSchedule("0 0/2 8-17 * * ?") .ForJob("myJob", "group1") .Build(); //Build a trigger that will fire daily at 10:42 am: // we use CronScheduleBuilder's static helper methods here trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(10, 42)) .ForJob(myJob) .Build(); trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithCronSchedule("0 42 10 * * ?") .ForJob("myJob", "group1") .Build(); //Build a trigger that will fire on Wednesdays at 10:42 am, in a TimeZone other than the system's default: trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithSchedule(CronScheduleBuilder .WeeklyOnDayAndHourAndMinute(DayOfWeek.Wednesday, 10, 42) .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time"))) .ForJob(myJob) .Build(); trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithCronSchedule("0 42 10 ? * WED", x => x .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time"))) .ForJob(myJob) .Build(); // When building CronTriggers, you specify the misfire instruction as part of the cron schedule (via WithCronSchedule extension method):失败后某人指令 trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithCronSchedule("0 0/2 8-17 * * ?", x => x .WithMisfireHandlingInstructionFireAndProceed()) .ForJob("myJob", "group1") .Build(); sched.ScheduleJob(myJob, trigger); }
/// <summary> /// Runs evening notifier. /// </summary> public static async Task RunNotifier() { await RefreshNotifiedToday(); await ResetWeekType(); // Grab the Scheduler instance from the Factory NameValueCollection props = new NameValueCollection { { "quartz.serializer.type", "binary" } }; StdSchedulerFactory factory = new StdSchedulerFactory(props); IScheduler scheduler = await factory.GetScheduler(); // and start it off await scheduler.Start(); IJobDetail eveningNotify = JobBuilder.Create <EveningNotify>() .WithIdentity("evening") .Build(); // Trigger the job to run now, and then repeat every day at the specific time ITrigger eveningTrigger = TriggerBuilder.Create() .WithIdentity("evening") .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(21, 00)) .ForJob(eveningNotify) .Build(); await scheduler.ScheduleJob(eveningNotify, eveningTrigger); // Reset notified IJobDetail resetNotified = JobBuilder.Create <ResetNotified>() .WithIdentity("resetNotified") .Build(); ITrigger resetNotifiedTrigger = TriggerBuilder.Create() .WithIdentity("resetNotified") .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(07, 01)) .ForJob(resetNotified) .Build(); await scheduler.ScheduleJob(resetNotified, resetNotifiedTrigger); // Reset week type IJobDetail resetWeekType = JobBuilder.Create <ResetWeekType>() .WithIdentity("resetWeekType") .Build(); ITrigger resetWeekTypeTrigger = TriggerBuilder.Create() .WithIdentity("resetWeekType") .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 7, 0)) .ForJob(resetWeekType) .Build(); await scheduler.ScheduleJob(resetWeekType, resetWeekTypeTrigger); //TODO: Impl load from API var lessons = new Dictionary <(int, int), string> { { (7, 44), "first" },
public void Add(Task task) { if (task.NotificationTime >= DateTime.Now) { switch (task.isDWMf) { case 0: { IJobDetail taskToNotify = JobBuilder.Create <Notification>().WithIdentity(task.NotificationTime.ToString()).Build(); taskToNotify.JobDataMap["Task"] = task; ITrigger trigger = TriggerBuilder.Create().StartAt(task.NotificationTime).Build(); scheduler.ScheduleJob(taskToNotify, trigger); break; } case 1: { IJobDetail taskToNotify = JobBuilder.Create <Notification>().WithIdentity(task.NotificationTime.ToString()).Build(); taskToNotify.JobDataMap["Task"] = task; ITrigger trigger = TriggerBuilder.Create() .WithDailyTimeIntervalSchedule (s => s.WithIntervalInHours(24) .OnEveryDay() .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(task.StartingTime.Hours, task.StartingTime.Minutes))) .Build(); scheduler.ScheduleJob(taskToNotify, trigger); break; } case 2: { IJobDetail taskToNotify = JobBuilder.Create <Notification>().WithIdentity(task.NotificationTime.ToString()).Build(); taskToNotify.JobDataMap["Task"] = task; ITrigger trigger = TriggerBuilder.Create() .WithSchedule(CronScheduleBuilder .WeeklyOnDayAndHourAndMinute(task.StartingDate.DayOfWeek, task.StartingTime.Hours, task.StartingTime.Minutes)) .Build(); scheduler.ScheduleJob(taskToNotify, trigger); break; } default: { IJobDetail taskToNotify = JobBuilder.Create <Notification>().WithIdentity(task.NotificationTime.ToString()).Build(); taskToNotify.JobDataMap["Task"] = task; string asd = "0 " + task.StartingTime.Minutes + " " + task.StartingTime.Hours + " " + task.StartingDate.Day + " * ?"; ITrigger trigger = TriggerBuilder.Create() .WithCronSchedule("0 " + task.StartingTime.Minutes + " " + task.StartingTime.Hours + " " + task.StartingDate.Day + " * ?") .Build(); scheduler.ScheduleJob(taskToNotify, trigger); break; } } } }
private void DefinirAgendamentoExecucao() { RegistroLog.RegistarLogInfo(Mensagem.SistemaAgendamentoInicio); ISchedulerFactory schedFact = new StdSchedulerFactory(); ITrigger trigger; this.scheduler = schedFact.GetScheduler(); //this.scheduler.Start(); IJobDetail job = JobBuilder.Create <FrmArquivoDataSUS>() .WithIdentity("JobAplicacao", "groupAplicacao") .Build(); if (this.gbxAcadaMinuto.Enabled) { trigger = TriggerBuilder.Create() .StartNow() .WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(Convert.ToInt32(this.nudCadaMinuto.Value.ToString()))) .Build(); } else { CronScheduleBuilder cronScheduleBuilder; Enumeradores.DiaDaSemana dia = Enumeradores.ConverterObject2DiaDaSemana(this.ddlDiaAgendamento.SelectedValue); if (dia == Enumeradores.DiaDaSemana.AllDays) { cronScheduleBuilder = CronScheduleBuilder.DailyAtHourAndMinute(Convert.ToInt32(this.nudHora.Value), Convert.ToInt32(this.nudMinuto.Value)); } else { cronScheduleBuilder = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute((DayOfWeek)dia, Convert.ToInt32(this.nudHora.Value), Convert.ToInt32(this.nudMinuto.Value)); } trigger = TriggerBuilder.Create() .StartNow() .WithSchedule(cronScheduleBuilder) .Build(); } this.scheduler.ScheduleJob(job, trigger); this.scheduler.Start(); this.lblUltimaExecucao.Text = "--/--/---- --:--:--"; this.lblProximaExecucao.Text = trigger.GetNextFireTimeUtc().Value.LocalDateTime.ToString(Constantes.FormatoDataHora); RegistroLog.RegistarLogInfo(Mensagem.SistemaAgendamentoFim); }
private void DefinirAgendamentoExecucao() { RegistroLog.RegistarLogInfo(Mensagem.SistemaAgendamentoInicio); ISchedulerFactory schedFact = new StdSchedulerFactory(); ITrigger trigger; this.scheduler = schedFact.GetScheduler(); IJobDetail job = JobBuilder.Create <ServicoArquivosDataSUS>() .WithIdentity("JobServico", "groupServico") .Build(); if (this.executarAcadaMinuto > 0) { trigger = TriggerBuilder.Create() .StartNow() .WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(this.executarAcadaMinuto)) .Build(); } else { CronScheduleBuilder cronScheduleBuilder; Enumeradores.DiaDaSemana dia = Enumeradores.ConverterObject2DiaDaSemana(this.diaAgendamento); if (dia == Enumeradores.DiaDaSemana.AllDays) { cronScheduleBuilder = CronScheduleBuilder.DailyAtHourAndMinute(this.hora, this.minuto); } else { cronScheduleBuilder = CronScheduleBuilder.WeeklyOnDayAndHourAndMinute((DayOfWeek)dia, this.hora, this.minuto); } trigger = TriggerBuilder.Create() .StartNow() .WithSchedule(cronScheduleBuilder) .Build(); } this.scheduler.ScheduleJob(job, trigger); this.scheduler.Start(); RegistroLog.RegistarLogInfo(Mensagem.ServicoProximaExecucao + " - " + trigger.GetNextFireTimeUtc().Value.LocalDateTime.ToString(Constantes.FormatoDataHora)); RegistroLog.RegistarLogInfo(Mensagem.SistemaAgendamentoFim); }
private void UpdateScheduledSettings(ScheduledJobsSettings settings) { settings.PlexAvailabilityChecker = 60; settings.SickRageCacher = 60; settings.SonarrCacher = 60; settings.CouchPotatoCacher = 60; settings.StoreBackup = 24; settings.StoreCleanup = 24; settings.UserRequestLimitResetter = 12; settings.PlexEpisodeCacher = 12; var cron = (Quartz.Impl.Triggers.CronTriggerImpl)CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Friday, 7, 0).Build(); settings.RecentlyAddedCron = cron.CronExpressionString; // Weekly CRON at 7 am on Mondays }
// Build a trigger that will fire on Wednesdays at 10:42 am, in a TimeZone other than the system’s default: public void BuildTrigger3() { // we use CronScheduleBuilder's static helper methods here JobKey myJobKey = JobKey.Create("JobKey-name", "JobKey-group"); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Wednesday, 10, 42) .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time"))) .ForJob(myJobKey) .Build(); // or - ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithCronSchedule("0 42 10 ? * WED", x => x.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time"))) .ForJob(myJobKey) .Build(); }
/// <summary> /// Adds a new weekly job to the scheduler /// </summary> /// <typeparam name="T">Job is generated</typeparam> /// <param name="name">Name of the job</param> /// <param name="group">Group of jobs</param> public async void AddWeeklyJob <T>(string name, string group) where T : IJob { // Create a job IJobDetail job = JobBuilder.Create <T>() .WithIdentity(name, group) .Build(); // Create triggers ITrigger jobTrigger = TriggerBuilder.Create() .WithIdentity(name + "Trigger", group) .StartNow() // Start now .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 0, 0)) // With repetition every week on Monday at 12:00 AM .Build(); // Attach job await Scheduler.ScheduleJob(job, jobTrigger); }
public static void StartJob <TJob>(IScheduler scheduler, string cron) where TJob : IJob { var jobName = typeof(TJob).FullName; var job = JobBuilder.Create <TJob>() .WithIdentity(jobName) .Build(); var trigger = TriggerBuilder.Create() .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Sunday, 06, 30) .WithMisfireHandlingInstructionFireAndProceed() // .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Africa/Lagos"))) .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("W. Central Africa Standard Time"))) .ForJob(job) .Build(); scheduler.ScheduleJob(job, trigger); }
private static async Task RunProgramRunExample() { try { // Grab the Scheduler instance from the Factory NameValueCollection props = new NameValueCollection { { "quartz.serializer.type", "binary" } }; StdSchedulerFactory factory = new StdSchedulerFactory(props); IScheduler scheduler = await factory.GetScheduler(); // and start it off await scheduler.Start(); // define the job and tie it to our HelloJob class IJobDetail job = JobBuilder.Create <UpdateJob>() .WithIdentity("job1", "group1") .Build(); IJobDetail job2 = JobBuilder.Create <ReviewJob>() .WithIdentity("job2", "group2") .Build(); // Trigger the job to run now, and then repeat every 10 seconds ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(3, 0)) .Build(); ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity("trigger2", "group2") .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 3, 0)) .Build(); // Tell quartz to schedule the job using our trigger await scheduler.ScheduleJob(job, trigger); await scheduler.ScheduleJob(job2, trigger2); } catch (SchedulerException se) { Console.WriteLine(se); } }
public async Task ScheduleWeeklyUpdateAsync(IScheduler scheduler) { JobDataMap dataMap = new JobDataMap { { "ServiceManager", this.ServiceManager }, { "DiscordClient", this.DiscordClient }, }; IJobDetail job = JobBuilder.Create <WeeklyUpdateJob>() .WithIdentity("Weekly Update", "Energize") .SetJobData(dataMap) .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("Weekly Trigger", "Energize") .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 5, 0)) .Build(); await scheduler.ScheduleJob(job, trigger); }
public static void Start() { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); IJobDetail job = JobBuilder.Create <EmailJob>().Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") //.StartAt(new DateTime(2015, 12, 21, 17, 19, 0, 0)) .StartNow() .WithSchedule(CronScheduleBuilder .WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 10, 00) //.WithMisfireHandlingInstructionDoNothing() //Do not fire if the firing is missed .WithMisfireHandlingInstructionFireAndProceed() //MISFIRE_INSTRUCTION_FIRE_NOW .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("GTB Standard Time")) //(GMT+02:00) ) .Build(); scheduler.ScheduleJob(job, trigger); }
private async void ScheduleJobs() { _scheduler.JobFactory = new RfmJobFactory(this); var weeklyJob = JobBuilder.Create <WeeklySummaryJob>() .WithIdentity("weeklyJob", "weeklyGroup") .Build(); // TODO: Clean this shit up, function is getting too long var weeklyTriggerVals = _config["RingFit:Schedule:SundayWeeklyStatsList"].Split(':') .Select(x => Convert.ToUInt16(x)).ToList(); var weeklyHour = weeklyTriggerVals[0]; var weeklyMinute = weeklyTriggerVals[1]; var weeklyTrigger = TriggerBuilder.Create() .WithIdentity("weeklyTrigger", "weeklyGroup") .StartNow() .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Sunday, weeklyHour, weeklyMinute)) .Build(); var dailyJob = JobBuilder.Create <DailyPostJob>() .WithIdentity("dailyJob", "dailyGroup") .Build(); var dailyTriggerVals = _config["RingFit:Schedule:DailyChallengePost"].Split(':') .Select(x => Convert.ToUInt16(x)).ToList(); var dailyHour = dailyTriggerVals[0]; var dailyMinute = dailyTriggerVals[1]; var dailyTrigger = TriggerBuilder.Create() .WithIdentity("dailyTrigger", "dailyGroup") .StartNow() .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(dailyHour, dailyMinute)) .Build(); await _scheduler.ScheduleJob(weeklyJob, weeklyTrigger); await _scheduler.ScheduleJob(dailyJob, dailyTrigger); }
/// <summary> /// 初始化定时器。 /// 每周星期几定时执行。 /// </summary> /// <param name="jobType">要执行的作业</param> /// <param name="weekday">星期几</param> /// <param name="hour">小时</param> /// <param name="minute">分钟</param> public void init(Type jobType, DayOfWeek dayOfWeek, int hour, int minute) { //工厂 factory = new StdSchedulerFactory(); //创建scheduler IScheduler scheduler = factory.GetScheduler(); //启动 scheduler.Start(); //描述工作 IJobDetail job = JobBuilder.Create(jobType).WithIdentity(jobType.Name, "myGroup").UsingJobData("name", "quartz").Build(); //触发器 ITrigger trigger = null; //每周星期几定时执行 trigger = TriggerBuilder.Create() .WithIdentity(jobType.Name + "trigger", "myGroup") .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute))//每周相应时间执行 .Build(); //执行 scheduler.ScheduleJob(job, trigger); }
public static async void Start() { try { var scheduler = await StdSchedulerFactory.GetDefaultScheduler(); await scheduler.Start(); var job = JobBuilder.Create <FollowEmailJob>().Build(); var trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithSchedule(CronScheduleBuilder .WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 8, 45) .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time"))) .Build(); await scheduler.ScheduleJob(job, trigger); } catch (Exception e) { Debug.WriteLine(e); Console.WriteLine(e); } }
/// <param name="scheduleConfig">Setting Key from your CloudConfigurations, value format "hh:mm;hh:mm;"</param> /// <param name="jobType">must inherit from IJob</param> /// <param name="timeZoneId">See http://alexandrebrisebois.wordpress.com/2013/01/20/using-quartz-net-to-schedule-jobs-in-windows-azure-worker-roles/#more-658 for Ids</param> public void ScheduleWeeklyJob(string scheduleConfig, Type jobType, string timeZoneId) { var schedule = CloudConfigurationManager.GetSetting(scheduleConfig); schedule.Split(';').Where(s => !string.IsNullOrWhiteSpace(s)).ToList().ForEach(h => { var index = h.IndexOf(':'); var hour = h.Substring(0, index); var minutes = h.Substring(index + 1, h.Length - (index + 1)); var job = new JobDetailImpl(jobType.Name + hour + minutes, null, jobType); var trigger = TriggerBuilder.Create() .StartNow() .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, Convert.ToInt32(hour, CultureInfo.InvariantCulture), Convert.ToInt32(minutes, CultureInfo.InvariantCulture)) .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById(timeZoneId))) .Build(); sched.ScheduleJob(job, trigger); }); }
static async System.Threading.Tasks.Task Main(string[] args) { var props = new NameValueCollection() { { "quartz.serializer.type", "binary" } }; var factory = new StdSchedulerFactory(props); IScheduler sched = await factory.GetScheduler(); await sched.Start(); var cal = new HolidayCalendar(); cal.AddExcludedDate(DateTime.Now.AddDays(-1)); await sched.AddCalendar("myHolidays", cal, false, false); IJobDetail job = JobBuilder.Create <DumbJob>().WithIdentity("myJob", "group1") .UsingJobData("jobSays", "Hello World!") .UsingJobData("myFloatValue", 3.141f) .Build(); ITrigger trigger = TriggerBuilder.Create().WithIdentity("myTrigger") .WithSchedule(CronScheduleBuilder.CronSchedule("0-10 * * ? * * *")) // first 10 second every minute .ModifiedByCalendar("myHolidays") // but not on holidays .Build(); ITrigger trigger1 = TriggerBuilder.Create().WithIdentity("trigger1", "group1") .WithCronSchedule("0-10 * * ? * * *") // first 10 second every minute .ForJob("myJob", "group1") .Build(); ITrigger trigger2 = TriggerBuilder.Create().WithIdentity("myTrigger2") .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(16, 30)) // execute job daily at 16.30 .ModifiedByCalendar("myHolidays") // but not on holidays .Build(); //Build a trigger that will fire on Wednesdays at 10:42 am, in a TimeZone other than the system’s default: ITrigger trigger21 = TriggerBuilder.Create().WithIdentity("trigger21", "group1") .WithCronSchedule("0 42 10 ? * WED", x => x .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time"))) .Build(); ITrigger trigger22 = TriggerBuilder.Create().WithIdentity("trigger3", "group1") .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Wednesday, 10, 42) .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time"))) .Build(); //SimpleTrigger : once at a specific moment in time, or at a specific moment in time followed by repeats at a specific interval. //Build a trigger for a specific moment in time, with no repeats: ISimpleTrigger trigger3 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger3", "group1") .StartAt(DateTimeOffset.UtcNow.AddSeconds(5)) .ForJob("myJob", "group1") // identify job with name, group strings .Build(); //Build a trigger for a specific moment in time, then repeating every ten seconds ten times: ISimpleTrigger trigger4 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger4", "group1") .StartAt(DateTimeOffset.UtcNow.AddSeconds(5)) // if a start time is not given (if this line were omitted), "now" is implied .WithSimpleSchedule(x => x.WithIntervalInSeconds(10) .WithRepeatCount(10)) // note that 10 repeats will give a total of 11 firings .ForJob("myJob", "group1") .Build(); //Build a trigger that will fire once, five minutes in the future: ISimpleTrigger trigger5 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger5", "group1") .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Second)) // use DateBuilder to create a date in the future .ForJob("myJob", "group1") .Build(); //Build a trigger that will fire now, then repeat every five minutes, until the hour 17:10: ISimpleTrigger trigger6 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger6", "group1") .WithSimpleSchedule(x => x.WithIntervalInSeconds(5) .RepeatForever()) .EndAt(DateBuilder.DateOf(22, 10, 0)) .Build(); //Build a trigger that will fire at the top of the next hour, then repeat every 2 hours, forever: ISimpleTrigger trigger7 = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("myTrigger7") // because group is not specified, "trigger8" will be in the default group .StartAt(DateBuilder.EvenHourDate(null)) // get the next even-hour (minutes and seconds zero ("00:00")) .WithSimpleSchedule(x => x.WithIntervalInHours(2) .RepeatForever()) // note that in this example, 'forJob(..)' is not called // - which is valid if the trigger is passed to the scheduler along with the job .Build(); await sched.ScheduleJob(job, trigger1); Console.ReadLine(); }
public static void StartJob <TJob>(IScheduler scheduler) where TJob : IJob { var jobName = typeof(TJob).FullName; var job = JobBuilder.Create <TJob>().WithIdentity(jobName).Build(); var trigger = TriggerBuilder.Create().WithIdentity(jobName + "trigger").WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Sunday, 0, 0)).ForJob(jobName).Build(); scheduler.ScheduleJob(job, trigger); }
/// <summary> /// 每周某一天执行 /// </summary> /// <param name="dayOfWeek"></param> /// <param name="hour"></param> /// <param name="minute"></param> /// <returns></returns> protected ITrigger TriggerWeekly(DayOfWeek dayOfWeek, int hour, int minute) => BuildTrigger(t => t.WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)).Build());
protected override void OnStart(string[] args) { try { // construct a scheduler factory ISchedulerFactory schedFact = new StdSchedulerFactory(); // get a scheduler IScheduler sched = schedFact.GetScheduler(); sched.Start(); // define the job and tie it to our HelloJob class IJobDetail job = JobBuilder.Create <HelloJob>() .WithIdentity("myJob", "group1") .Build(); // Trigger the job to run now, and then every 40 seconds //ITrigger trigger = TriggerBuilder.Create() // .WithIdentity("myTrigger", "group1") // .StartNow() // .WithSimpleSchedule(x => x // .WithIntervalInSeconds(40) // .RepeatForever()) // .Build(); ITrigger trigger; //holiday calendar //HolidayCalendar cal = new HolidayCalendar(); //cal.AddExcludedDate(DateTime.Now.AddDays(1)); //sched.AddCalendar("myHolidays", cal, false,false); if (CSMV3Function.GetIsDaily()) { logger.Debug("Start Daily"); trigger = TriggerBuilder.Create() .WithIdentity("myTrigger") .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(CSMV3Function.GetHour(), CSMV3Function.GetMinutes())) // execute job daily at //.ModifiedByCalendar("myHolidays") // but not on holidays .Build(); } else if (CSMV3Function.GetIsWeekly()) { logger.Debug("Start Weekly"); logger.Debug("Day of week is : " + CSMV3Function.GetDayofWeek()); trigger = TriggerBuilder.Create() .WithIdentity("myTrigger") .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(CSMV3Function.GetDayofWeek(), CSMV3Function.GetHour(), CSMV3Function.GetMinutes())) // execute job daily at //.ModifiedByCalendar("myHolidays") // but not on holidays .Build(); } else if (CSMV3Function.GetIsMonthly()) { logger.Debug("Start Monthly"); logger.Debug("Day of month is : " + CSMV3Function.GetDayofMonth()); trigger = TriggerBuilder.Create() .WithIdentity("myTrigger") .WithSchedule(CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(CSMV3Function.GetDayofMonth(), CSMV3Function.GetHour(), CSMV3Function.GetMinutes())) // execute job daily at //.ModifiedByCalendar("myHolidays") // but not on holidays .Build(); } else { trigger = TriggerBuilder.Create() .WithIdentity("myTrigger", "group1") .WithSimpleSchedule(x => x .WithIntervalInSeconds(CSMV3Function.GetIntervalinSeconds()) .RepeatForever()) .EndAt(DateBuilder.DateOf(22, 0, 0)) .Build(); } sched.ScheduleJob(job, trigger); } catch (Exception ex) { logger.Error(ex.Message); logger.Error(ex.InnerException); throw; } }
public static TriggerBuilder TriggerWeekly_(this TriggerBuilder builder, DayOfWeek dayOfWeek, int hour, int minute, string name, string group = null) { builder = builder.WithIdentity_(name, group).WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)); return(builder); }
private IEnumerable <ITrigger> CreateTriggers() { var settingsService = Service.Resolve <ISettingsService <ScheduledJobsSettings> >(); var s = settingsService.GetSettings(); if (s.CouchPotatoCacher == 0) { s.CouchPotatoCacher = 60; } if (s.WatcherCacher == 0) { s.WatcherCacher = 60; } if (s.PlexAvailabilityChecker == 0) { s.PlexAvailabilityChecker = 60; } if (s.PlexEpisodeCacher == 0) { s.PlexEpisodeCacher = 11; } if (string.IsNullOrEmpty(s.RecentlyAddedCron)) { var cron = (Quartz.Impl.Triggers.CronTriggerImpl) CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Friday, 7, 0).Build(); s.RecentlyAddedCron = cron.CronExpressionString; // Weekly CRON at 7 am on Mondays } if (s.SickRageCacher == 0) { s.SickRageCacher = 60; } if (s.SonarrCacher == 0) { s.SonarrCacher = 60; } if (s.StoreBackup == 0) { s.StoreBackup = 24; } if (s.StoreCleanup == 0) { s.StoreCleanup = 24; } if (s.UserRequestLimitResetter == 0) { s.UserRequestLimitResetter = 12; } if (s.FaultQueueHandler == 0) { s.FaultQueueHandler = 6; } if (s.PlexContentCacher == 0) { s.PlexContentCacher = 60; } if (s.PlexUserChecker == 0) { s.PlexUserChecker = 24; } if (s.RadarrCacher == 0) { s.RadarrCacher = 60; } if (s.EmbyContentCacher == 0) { s.EmbyContentCacher = 60; } if (s.EmbyAvailabilityChecker == 0) { s.EmbyAvailabilityChecker = 60; } if (s.EmbyEpisodeCacher == 0) { s.EmbyEpisodeCacher = 11; } if (s.EmbyUserChecker == 0) { s.EmbyUserChecker = 24; } var triggers = new List <ITrigger>(); var plexAvailabilityChecker = TriggerBuilder.Create() .WithIdentity("PlexAvailabilityChecker", "Plex") .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexAvailabilityChecker).RepeatForever()) .Build(); var plexCacher = TriggerBuilder.Create() .WithIdentity("PlexContentCacher", "PlexCacher") .StartNow() .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexContentCacher).RepeatForever()) .Build(); var plexUserChecker = TriggerBuilder.Create() .WithIdentity("PlexUserChecker", "Plex") .StartAt(DateBuilder.FutureDate(1, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexUserChecker).RepeatForever()) .Build(); var srCacher = TriggerBuilder.Create() .WithIdentity("SickRageCacher", "Cache") .StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SickRageCacher).RepeatForever()) .Build(); var sonarrCacher = TriggerBuilder.Create() .WithIdentity("SonarrCacher", "Cache") .StartAt(DateBuilder.FutureDate(3, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SonarrCacher).RepeatForever()) .Build(); var cpCacher = TriggerBuilder.Create() .WithIdentity("CouchPotatoCacher", "Cache") .StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.CouchPotatoCacher).RepeatForever()) .Build(); var watcherCacher = TriggerBuilder.Create() .WithIdentity("WatcherCacher", "Cache") //.StartNow() .StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.WatcherCacher).RepeatForever()) .Build(); var radarrCacher = TriggerBuilder.Create() .WithIdentity("RadarrCacher", "Cache") .StartNow() //.StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.RadarrCacher).RepeatForever()) .Build(); var storeBackup = TriggerBuilder.Create() .WithIdentity("StoreBackup", "Database") .StartAt(DateBuilder.FutureDate(20, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreBackup).RepeatForever()) .Build(); var storeCleanup = TriggerBuilder.Create() .WithIdentity("StoreCleanup", "Database") .StartAt(DateBuilder.FutureDate(35, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreCleanup).RepeatForever()) .Build(); var userRequestLimiter = TriggerBuilder.Create() .WithIdentity("UserRequestLimiter", "Request") .StartAt(DateBuilder.FutureDate(25, IntervalUnit.Minute)) // Everything has started on application start, lets wait 5 minutes .WithSimpleSchedule(x => x.WithIntervalInHours(s.UserRequestLimitResetter).RepeatForever()) .Build(); var plexEpCacher = TriggerBuilder.Create() .WithIdentity("PlexEpisodeCacher", "Cache") .StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.PlexEpisodeCacher).RepeatForever()) .Build(); var rencentlyAdded = TriggerBuilder.Create() .WithIdentity("RecentlyAddedModel", "Email") .StartNow() .WithCronSchedule(s.RecentlyAddedCron) .Build(); var fault = TriggerBuilder.Create() .WithIdentity("FaultQueueHandler", "Fault") //.StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute)) .StartAt(DateBuilder.FutureDate(13, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.FaultQueueHandler).RepeatForever()) .Build(); //Emby var embyEpisode = TriggerBuilder.Create() .WithIdentity("EmbyEpisodeCacher", "Emby") //.StartNow() .StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.EmbyEpisodeCacher).RepeatForever()) .Build(); var embyContentCacher = TriggerBuilder.Create() .WithIdentity("EmbyContentCacher", "Emby") .StartNow() .WithSimpleSchedule(x => x.WithIntervalInHours(s.EmbyContentCacher).RepeatForever()) .Build(); var embyAvailabilityChecker = TriggerBuilder.Create() .WithIdentity("EmbyAvailabilityChecker", "Emby") .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.EmbyAvailabilityChecker).RepeatForever()) .Build(); var embyUserChecker = TriggerBuilder.Create() .WithIdentity("EmbyUserChecker", "Emby") //.StartNow() .StartAt(DateBuilder.FutureDate(1, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.EmbyUserChecker).RepeatForever()) .Build(); triggers.Add(rencentlyAdded); triggers.Add(plexAvailabilityChecker); triggers.Add(srCacher); triggers.Add(sonarrCacher); triggers.Add(cpCacher); triggers.Add(watcherCacher); triggers.Add(storeBackup); triggers.Add(storeCleanup); triggers.Add(userRequestLimiter); triggers.Add(plexEpCacher); triggers.Add(fault); triggers.Add(plexCacher); triggers.Add(plexUserChecker); triggers.Add(radarrCacher); triggers.Add(embyEpisode); triggers.Add(embyAvailabilityChecker); triggers.Add(embyContentCacher); triggers.Add(embyUserChecker); return(triggers); }