static void Main() { try { if (log.IsDebugEnabled) log.Debug("Apache log4net successfully initialized."); var jobDetail = new JobDetail("SampleJob", "SampleJobGroup", typeof(CronJob)); var cronTrigger = new CronTrigger("SampleTrigger", "SampleTriggerGroup", "0/4 * * * * ? *"); var schedulerFactory = new StdSchedulerFactory(); var scheduler = schedulerFactory.GetScheduler(); scheduler.ScheduleJob(jobDetail, cronTrigger); scheduler.Start(); var msg = String.Format("Starting Quartz.NET cron job ({0})", cronTrigger.CronExpressionString); if (!log.IsInfoEnabled) Console.WriteLine(msg); log.Info(msg); } catch (SchedulerException err) { var msg = String.Format("Quartz.NET Scheduler error: {0}", err.Message); if (!log.IsErrorEnabled) Console.WriteLine(msg); log.Error(msg); Console.WriteLine("Press any key to continue . . ."); Console.ReadKey(true); } }
public Form1() { InitializeComponent(); // Instantiate the Quartz.NET scheduler StdSchedulerFactory schedulerFactory = new StdSchedulerFactory(); IScheduler scheduler = schedulerFactory.GetScheduler(); // Instantiate the JobDetail object passing in the type of your // custom job class. Your class merely needs to implement a simple // interface with a single method called "Execute". JobDetail job = new JobDetail( "job1", "group1", typeof( MyJobClass ) ); DateTime now = DateTime.Now.AddMinutes( 1 ); DateTime dt = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0 ); CronTrigger trigger = new CronTrigger( "trigger 1", "group1", "job1", "group1", "5 * * * * ?" ); //CronTrigger ct = new CronTrigger( "trigger 1", "group1", "job1", "group1", "5 * * * * ?" ); //SimpleTrigger trigger = new SimpleTrigger( "trigger 1", new DateTime( dt.ToFileTimeUtc() ), null, SimpleTrigger.RepeatIndefinitely, new TimeSpan( 0, 0, 0, 15 ) ); //trigger.JobName = "job1"; //trigger.Group = "group1"; //trigger.JobGroup = "group1"; // Instantiate a trigger using the basic cron syntax. // This tells it to run at 1AM every Monday - Friday. // Add the job to the scheduler scheduler.AddJob( job, true ); scheduler.ScheduleJob( trigger ); scheduler.Start(); }
private void InitializeScheduler() { try { if (scheduler != null) { return; } Logger.Log.Debug("Initializing Collector scheduler..."); schedulerFactory = new StdSchedulerFactory(); scheduler = schedulerFactory.GetScheduler(); // BatDongSanJob jobDetail = new JobDetail("BatDongSanJob", null, typeof(BatDongSanJob)); string cronEx = CollectorConfiguration.BatDongSan.BatDongSanCronTriggerExpression; cronTrigger = new CronTrigger( "BatDongSanTrigger", null, cronEx ); cronTrigger.StartTimeUtc = DateTime.UtcNow; scheduler.ScheduleJob(jobDetail, cronTrigger); Logger.Log.Debug("Initialize Collector scheduler completely."); } catch (Exception ex) { Logger.Log.Error(ex); } }
/// <summary> /// Make a trigger that will fire every month at the given day and time. /// <p> /// The generated trigger will not have its name, group, /// or end-time set. The Start time defaults to 'now'. /// </p> /// <p> /// If the day of the month specified does not occur in a given month, a /// firing will not occur that month. (i.e. if dayOfMonth is specified as /// 31, no firing will occur in the months of the year with fewer than 31 /// days). /// </p> /// </summary> /// <param name="dayOfMonth">(1-31, or -1) the day of week upon which to fire</param> /// <param name="hour">the hour (0-23) upon which to fire</param> /// <param name="minute">the minute (0-59) upon which to fire</param> /// <returns>the newly created trigger</returns> public static Trigger MakeMonthlyTrigger(int dayOfMonth, int hour, int minute) { ValidateDayOfMonth(dayOfMonth); ValidateHour(hour); ValidateMinute(minute); CronTrigger trig = new CronTrigger(); try { if (dayOfMonth != LastDayOfMonth) { trig.CronExpressionString = string.Format(CultureInfo.InvariantCulture, "0 {0} {1} {2} * ?", minute, hour, dayOfMonth); } else { trig.CronExpressionString = string.Format(CultureInfo.InvariantCulture, "0 {0} {1} L * ?", minute, hour); } } catch (Exception) { return(null); /* never happens... */ } trig.StartTimeUtc = DateTime.UtcNow; return(trig); }
protected void Application_Start(object sender, EventArgs e) { // First, initialize Quartz.NET as usual. In this sample app I'll configure Quartz.NET by code. var schedulerFactory = new StdSchedulerFactory(); var scheduler = schedulerFactory.GetScheduler(); scheduler.Start(); // This tells the QuartzNetWebConsole what scheduler to use Setup.Scheduler = () => scheduler; // This adds an logger to the QuartzNetWebConsole. It's optional. var partialQuartzConsoleUrl = string.Format("http://{0}:{1}/quartz/", Context.Request.Url.Host, Context.Request.Url.Port); Setup.Logger = new MemoryLogger(1000, partialQuartzConsoleUrl); // I'll add some global listeners scheduler.AddGlobalJobListener(new GlobalJobListener()); scheduler.AddGlobalTriggerListener(new GlobalTriggerListener()); // A sample trigger and job var trigger = TriggerUtils.MakeSecondlyTrigger(6); trigger.StartTimeUtc = DateTime.UtcNow; trigger.Name = "myTrigger"; scheduler.ScheduleJob(new JobDetail("myJob", null, typeof(HelloJob)), trigger); // A cron trigger and job var cron = new CronTrigger("myCronTrigger") { CronExpression = new CronExpression("0/10 * * * * ?"), // every 10 seconds JobName = "myJob", }; scheduler.ScheduleJob(cron); // A dummy calendar scheduler.AddCalendar("myCalendar", new DummyCalendar {Description = "dummy calendar"}, false, false); }
protected override void OnStart(string[] args) { try { //0 0 12 * * ? 每天12点触发 //0 15 10 ? * * 每天10点15分触发 //0 15 10 * * ? 每天10点15分触发 //0 15 10 * * ? * 每天10点15分触发 //0 15 10 * * ? 2005 2005年每天10点15分触发 //0 * 14 * * ? 每天下午的 2点到2点59分每分触发 //0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) //0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) //每天下午的 18点到18点59分(整点开始,每隔5分触发) //0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发 //0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发 //0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发 //0 15 10 15 * ? 每月15号上午10点15分触发 //0 15 10 L * ? 每月最后一天的10点15分触发 //0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发 //0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发 //0 15 10 ? * 6#3 每月的第三周的星期五开始触发 //0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次 //0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节) //发邮件工作任务 JobDetail m_TimingMailJobDetail1 = new JobDetail("打印测试文件", Guid.NewGuid().ToString("N"), typeof(RegularMailJob.RegularMail_T2)); JobDetail m_TimingMailJobDetail2 = new JobDetail("打印测试文件", Guid.NewGuid().ToString("N"), typeof(RegularMailJob.RegularMail_T2)); JobDetail m_TimingMailJobDetail3 = new JobDetail("打印测试文件", Guid.NewGuid().ToString("N"), typeof(RegularMailJob.RegularMail_T2)); //Trigger m_TimingMailTrigger = new SimpleTrigger(Guid.NewGuid().ToString("N"), Guid.NewGuid().ToString("N"), m_TimingMailJobDetail.Name, m_TimingMailJobDetail.Group, DateTime.UtcNow, null, 0, TimeSpan.FromDays(7)); //CronTrigger trigger = new CronTrigger("打印", "group1", "0/30 * * * * ?"); //从周一到周五每天上午的10点15分触发 CronTrigger trigger1 = new CronTrigger("打印1", "group1", "0 20 15 ? * MON-FRI"); CronTrigger trigger2 = new CronTrigger("打印2", "group2", "0 25 15 ? * MON-FRI"); CronTrigger trigger3 = new CronTrigger("打印3", "group3", "0 15 15 ? * MON-FRI"); SchedulerManager.GetScheduler().ScheduleJob(m_TimingMailJobDetail1, trigger1); log.Info("任务:" + m_TimingMailJobDetail1.FullName + " 已经调度成功!"); SchedulerManager.GetScheduler().ScheduleJob(m_TimingMailJobDetail2, trigger2); log.Info("任务:" + m_TimingMailJobDetail2.FullName + " 已经调度成功!"); SchedulerManager.GetScheduler().ScheduleJob(m_TimingMailJobDetail3, trigger3); log.Info("任务:" + m_TimingMailJobDetail3.FullName + " 已经调度成功!"); SchedulerManager.GetScheduler().Start(); log.Info("service started ok"); } catch (Exception ex) { log.Error("service started fail", ex); this.Stop(); } }
public static void ScheduleHeartbeatJob(string projectId) { string jobName = "Heartbeat_" + projectId; JobDetail job = new JobDetail(jobName, jobName, typeof(HeartbeatJob)); job.JobDataMap["projectId"] = projectId; CronTrigger trigger = new CronTrigger(jobName, jobName, jobName, jobName, FIVE_MINUTE_PATTERN); engine.AddJob(job, true); DateTime ft = engine.ScheduleJob(trigger); }
public static void ScheduleSqlJob(string projectId) { string jobName = "Report_" + projectId; JobDetail job = new JobDetail(jobName, jobName, typeof(SqlJob)); job.JobDataMap["projectId"] = projectId; job.JobDataMap["lastTime"] = Monitor.Common.ScheduleSetting.GetLastTime(projectId); CronTrigger trigger = new CronTrigger(jobName, jobName, jobName, jobName, Monitor.Common.SystemInternalSetting.Frequence); engine.AddJob(job, true); DateTime ft = engine.ScheduleJob(trigger); }
static void Main(string[] args) { Console.WriteLine("Starting scheduler..."); var properties = new NameValueCollection(); properties["quartz.scheduler.instanceName"] = "RemoteServerTestScheduler"; // set thread pool infoD:\Projects\QuartzMaster\QuartzMaster.TestServerHost\Program.cs properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz"; properties["quartz.threadPool.threadCount"] = "5"; properties["quartz.threadPool.threadPriority"] = "Normal"; // set remoting expoter properties["quartz.scheduler.exporter.type"] = "Quartz.Simpl.RemotingSchedulerExporter, Quartz"; properties["quartz.scheduler.exporter.port"] = "500"; properties["quartz.scheduler.exporter.bindName"] = "QuartzScheduler"; properties["quartz.scheduler.exporter.channelType"] = "tcp"; var schedulerFactory = new StdSchedulerFactory(properties); scheduler = schedulerFactory.GetScheduler(); // define the job and ask it to run var map = new JobDataMap(); map.Put("msg", "Some message!"); map.Put("msg 2", "Some message 2!"); map.Put("msg 3", "Some message 3!"); var job = new JobDetail("localJob", "default", typeof(NoOpJob)) { JobDataMap = map }; var job2 = new JobDetail("localJob 2", "default", typeof(NoOpJob)) { JobDataMap = map }; var trigger2 = new SimpleTrigger("Simple Trigger", "default", "localJob 2", "default", DateTime.Now, DateTime.Now.AddMinutes(10), SimpleTrigger.RepeatIndefinitely, new TimeSpan(0, 0, 45)); var trigger = new CronTrigger("remotelyAddedTrigger", "default", "localJob", "default", DateTime.UtcNow, null, "/5 * * ? * *"); var trigger3 = new SimpleTrigger("remotelyAddedTriggerB", "default", "localJob", "default", DateTime.Now, DateTime.Now.AddMinutes(10), SimpleTrigger.RepeatIndefinitely, new TimeSpan(0, 0, 45)); // schedule the job scheduler.ScheduleJob(job, trigger3); scheduler.ScheduleJob(job2, trigger2); scheduler.Start(); Console.WriteLine("Scheduler has been started."); Console.WriteLine("Press any key to stop scheduler"); Console.ReadKey(); scheduler.Shutdown(); }
public static Trigger BuildTrigger(string cronExpression, string triggerName) { CronTrigger trigger = new CronTrigger(); trigger.CronExpressionString = cronExpression; //ctrigger.CronExpressionString = "0/2 * * * * ?"; trigger.Name = triggerName; trigger.Group = Keys.TRIGGERGROUP; trigger.JobName = Keys.JOBNAME; trigger.JobGroup = Keys.JOBGROUP; return trigger; }
public void Execute() { //Debugger.Launch(); var schedulerFactory = new StdSchedulerFactory(); scheduler = schedulerFactory.GetScheduler(); scheduler.Start(); var foundTypes = typeLoader.LoadTypes(); foreach (var foundType in foundTypes) { if (foundType.Type.IsInterface) continue; if (typeof(IIntervalDaemon).IsAssignableFrom(foundType.Type)) { var intervalDaemon = (IIntervalDaemon)Activator.CreateInstance(foundType.Type); for (var i = 1; i <= intervalDaemon.NumberOfInstances; i++) { var jobName = intervalDaemon.Name + "_" + i; var jobDetail = new JobDetail(jobName, null, intervalDaemon.Job.GetType()); var trigger = TriggerUtils.MakeSecondlyTrigger(intervalDaemon.interval); trigger.StartTimeUtc = DateTime.UtcNow; trigger.Name = jobName + "Trigger"; trigger.JobDataMap.Add("configuration", foundType.Configuration); scheduler.ScheduleJob(jobDetail, trigger); } } if (typeof(IScheduledDaemon).IsAssignableFrom(foundType.Type)) { var scheduledDaemon = (IScheduledDaemon)Activator.CreateInstance(foundType.Type); var jobDetail = new JobDetail(scheduledDaemon.Name, null, scheduledDaemon.Job.GetType()); foreach (var cronString in scheduledDaemon.CronStrings) { var trigger = new CronTrigger(); trigger.CronExpressionString = cronString; trigger.StartTimeUtc = DateTime.UtcNow; trigger.Name = scheduledDaemon.Name + "Trigger"; trigger.JobDataMap.Add("configuration", foundType.Configuration); scheduler.ScheduleJob(jobDetail, trigger); } } } }
/// <summary> /// Make a trigger that will fire every week at the given day and time. /// <p> /// The generated trigger will not have its name, group, /// or end-time set. The Start time defaults to 'now'. /// </p> /// </summary> /// <param name="dayOfWeek">(1-7) the day of week upon which to fire</param> /// <param name="hour">the hour (0-23) upon which to fire</param> /// <param name="minute">the minute (0-59) upon which to fire</param> /// <returns>the new trigger</returns> public static Trigger MakeWeeklyTrigger(DayOfWeek dayOfWeek, int hour, int minute) { ValidateHour(hour); ValidateMinute(minute); CronTrigger trig = new CronTrigger(); try { trig.CronExpressionString = string.Format(CultureInfo.InvariantCulture, "0 {0} {1} ? * {2}", minute, hour, ((int)dayOfWeek + 1)); } catch (Exception) { return(null); /* never happens... */ } trig.StartTimeUtc = DateTime.UtcNow; return(trig); }
static void Main(string[] args) { var properties = new NameValueCollection(); properties["quartz.threadPool.threadCount"] = "1"; const string cronExpression = "0/30 * * * * ?"; var scheduler = new StdSchedulerFactory(properties).GetScheduler(); var job = new JobDetail("NomeJob", "GrupoJob", typeof(BillingJob)); var trigger = new CronTrigger("NomeTrigger", "GrupoTrigger", "NomeJob", "GrupoJob", cronExpression); scheduler.ScheduleJob(job, trigger); scheduler.Start(); Console.ReadKey(); scheduler.Shutdown(); }
static void Main(string[] args) { Console.WriteLine("Starting scheduler..."); var properties = new NameValueCollection(); properties["quartz.scheduler.instanceName"] = "RemoteServerSchedulerClient"; // set thread pool info properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz"; properties["quartz.threadPool.threadCount"] = "5"; properties["quartz.threadPool.threadPriority"] = "Normal"; // set remoting expoter properties["quartz.scheduler.exporter.type"] = "Quartz.Simpl.RemotingSchedulerExporter, Quartz"; properties["quartz.scheduler.exporter.port"] = "555"; properties["quartz.scheduler.exporter.bindName"] = "QuartzScheduler"; properties["quartz.scheduler.exporter.channelType"] = "tcp"; var schedulerFactory = new StdSchedulerFactory(properties); var scheduler = schedulerFactory.GetScheduler(); // define the job and ask it to run var map = new JobDataMap(); map.Put("msg", "Some message!"); var job = new JobDetail("localJob", "default", typeof(NoOpJob)) { JobDataMap = map }; var trigger = new CronTrigger("remotelyAddedTrigger", "default", "localJob", "default", DateTime.UtcNow, null, "/5 * * ? * *"); // schedule the job scheduler.ScheduleJob(job, trigger); scheduler.Start(); Console.WriteLine("Scheduler has been started."); }
public bool Add(string taskid, NodeTaskRuntimeInfo nodetask) { lock (lock_task) { if (!TaskRuntimePool.ContainsKey(taskid)) { LogHelper.WriteInfo("加载taskJob"); JobDetail job1 = new JobDetail(taskid, nodetask.TaskModel.CategoryId.ToString(), typeof(TaskJob)); CronTrigger triger = new CronTrigger(nodetask.TaskModel.Id.ToString(), nodetask.TaskModel.CategoryId.ToString()); //triger.CronExpressionString = "0/10 * * * * ?"; triger.CronExpressionString = nodetask.TaskModel.TaskCron; //Trigger triger1 = TriggerFactory.Create(nodetask); LogHelper.WriteInfo("TaskCron:" + nodetask.TaskModel.TaskCron); _ische.ScheduleJob(job1, triger); TaskRuntimePool.Add(taskid, nodetask); return true; } else { return false; } } }
public static Trigger CreateTigger(NodeTaskRuntimeInfo taskruntimeinfo) { if (taskruntimeinfo.TaskModel.taskcron.Contains("[")) { var customcorn = CustomCornFactory.GetCustomCorn(taskruntimeinfo.TaskModel.taskcron); customcorn.Parse(); if (customcorn is SimpleCorn || customcorn is RunOnceCorn) { var simplecorn = customcorn as SimpleCorn; // 定义调度触发规则,比如每1秒运行一次,共运行8次 SimpleTrigger simpleTrigger = new SimpleTrigger(taskruntimeinfo.TaskModel.id.ToString(), taskruntimeinfo.TaskModel.categoryid.ToString()); if (simplecorn.ConInfo.StartTime != null) simpleTrigger.StartTimeUtc = simplecorn.ConInfo.StartTime.Value.ToUniversalTime(); //else // simpleTrigger.StartTimeUtc = DateTime.Now.ToUniversalTime(); if (simplecorn.ConInfo.EndTime != null) simpleTrigger.EndTimeUtc = simplecorn.ConInfo.EndTime.Value.ToUniversalTime(); if (simplecorn.ConInfo.RepeatInterval != null) simpleTrigger.RepeatInterval = TimeSpan.FromSeconds(simplecorn.ConInfo.RepeatInterval.Value); else simpleTrigger.RepeatInterval = TimeSpan.FromSeconds(1); if (simplecorn.ConInfo.RepeatCount != null) simpleTrigger.RepeatCount = simplecorn.ConInfo.RepeatCount.Value - 1;//因为任务默认执行一次,所以减一次 else simpleTrigger.RepeatCount = int.MaxValue;//不填,则默认最大执行次数 return simpleTrigger; } return null; } else { CronTrigger trigger = new CronTrigger(taskruntimeinfo.TaskModel.id.ToString(), taskruntimeinfo.TaskModel.categoryid.ToString());// 触发器名,触发器组 trigger.CronExpressionString = taskruntimeinfo.TaskModel.taskcron;// 触发器时间设定 return trigger; } }
public MonitorService() { this.ServiceName = "Sharp Monitoring Service"; // create the job to be scheduled Type jobType = typeof(DailyTask); JobDetail job = new JobDetail(jobType.Name, null, jobType); ISchedulerFactory schedFact = new StdSchedulerFactory(); sched = schedFact.GetScheduler(); sched.Start(); // schedule daily cron job Trigger trigger = new CronTrigger("CronTrigger", null, jobType.Name, null, SharpMonitor.Properties.Settings.Default.CornExpression); sched.AddJob(job, true); DateTime ft = sched.ScheduleJob(trigger); // start job immediately if next schedule job is tomorrow if (ft > DateTime.UtcNow) { sched.TriggerJob(jobType.Name, null); } }
/// <summary> /// Insert the cron trigger data. /// </summary> /// <param name="conn">the DB Connection</param> /// <param name="trigger">the trigger to insert</param> /// <returns>the number of rows inserted</returns> public virtual int InsertCronTrigger(ConnectionAndTransactionHolder conn, CronTrigger trigger) { using (IDbCommand cmd = PrepareCommand(conn, ReplaceTablePrefix(SqlInsertCronTrigger))) { AddCommandParameter(cmd, 1, "triggerName", trigger.Name); AddCommandParameter(cmd, 2, "triggerGroup", trigger.Group); AddCommandParameter(cmd, 3, "triggerCronExpression", trigger.CronExpressionString); #if NET_35 AddCommandParameter(cmd, 4, "triggerTimeZone", trigger.TimeZone.Id); #else AddCommandParameter(cmd, 4, "triggerTimeZone", trigger.TimeZone.StandardName); #endif return cmd.ExecuteNonQuery(); } }
/// <summary> /// Make a trigger that will fire every week at the given day and time. /// <p> /// The generated trigger will not have its name, group, /// or end-time set. The Start time defaults to 'now'. /// </p> /// </summary> /// <param name="dayOfWeek">(1-7) the day of week upon which to fire</param> /// <param name="hour">the hour (0-23) upon which to fire</param> /// <param name="minute">the minute (0-59) upon which to fire</param> /// <returns>the new trigger</returns> public static Trigger MakeWeeklyTrigger(DayOfWeek dayOfWeek, int hour, int minute) { ValidateHour(hour); ValidateMinute(minute); CronTrigger trig = new CronTrigger(); try { trig.CronExpressionString = string.Format(CultureInfo.InvariantCulture, "0 {0} {1} ? * {2}", minute, hour, ((int) dayOfWeek + 1)); } catch (Exception) { return null; /* never happens... */ } trig.StartTimeUtc = DateTime.UtcNow; return trig; }
/// <summary> /// Schedules the clean up job. /// </summary> /// <param name="job">The clean up job.</param> /// <param name="cronExpression">The CRON expression.</param> /// <exception cref="FormatException"> /// The <paramref name="cronExpression"/> is invalid. /// </exception> private static void ScheduleCleanUpJob(JobDetail job, string cronExpression) { var trigger = Scheduler.GetTriggersOfJob(job.Name, job.Group).FirstOrDefault(t => t.Name == CleanUpTriggerName && t.Group == CleanUpGroupName); if (trigger != null && !IsCronTrigger(trigger, cronExpression, TimeZoneInfo.Local)) { Scheduler.UnscheduleJob(trigger.Name, CleanUpGroupName); trigger = null; } if (trigger != null || string.IsNullOrEmpty(cronExpression)) return; trigger = new CronTrigger( CleanUpTriggerName, CleanUpGroupName, CleanUpJobName, CleanUpGroupName, cronExpression, TimeZoneInfo.Local); Scheduler.ScheduleJob(trigger); }
/// <summary> /// Schedules the action manager job. /// </summary> /// <param name="job"> /// The action manager job. /// </param> /// <param name="cronExpression"> /// The CRON expression. /// </param> /// <exception cref="FormatException"> /// The <paramref name="cronExpression"/> is invalid. /// </exception> private static void ScheduleActionManagerJob(JobDetail job, string cronExpression) { var trigger = Scheduler.GetTriggersOfJob(job.Name, job.Group).FirstOrDefault(t => t.Name == ActionManagerTriggerName && t.Group == ActionManagerGroupName); if (trigger != null && !IsCronTrigger(trigger, cronExpression, TimeZoneInfo.Local)) { Scheduler.UnscheduleJob(trigger.Name, ActionManagerGroupName); trigger = null; } if (trigger == null && !string.IsNullOrEmpty(cronExpression)) { trigger = new CronTrigger( ActionManagerTriggerName, ActionManagerGroupName, ActionManagerJobName, ActionManagerGroupName, cronExpression, TimeZoneInfo.Local); Scheduler.ScheduleJob(trigger); } }
static void Main(string[] args) { ISchedulerFactory factory = new StdSchedulerFactory(); IScheduler scheduler = factory.GetScheduler(); scheduler.Start(); JobDetail job = new JobDetail("firstJob", typeof(EmailManger)); job.Durable = true; scheduler.AddJob(job, false); //Trigger trigger = TriggerUtils.MakeSecondlyTrigger(5); //trigger.StartTimeUtc = TriggerUtils.GetEvenSecondDate(DateTime.UtcNow); //trigger.Name = "EmailSender"; //scheduler.ScheduleJob(job, trigger); CronTrigger ctrigger = new CronTrigger(); //ctrigger.StartTimeUtc = TriggerUtils.GetEvenSecondDate(DateTime.UtcNow); //ctrigger.CronExpressionString = "0/6 * * * * ?"; ctrigger.CronExpressionString = "0 0 2 ? * SUN"; ctrigger.Name = "tt"; ctrigger.Group = "default"; ctrigger.JobName = "firstJob"; //JobDetail job2 = new JobDetail("firstJob2", typeof(EmailManger)); CronTrigger ctrigger2 = new CronTrigger(); //ctrigger.StartTimeUtc = TriggerUtils.GetEvenSecondDate(DateTime.UtcNow); ctrigger2.CronExpressionString = "0/2 * * * * ?"; ctrigger2.Name = "tt2"; ctrigger2.Group = "default"; ctrigger2.JobName = "firstJob"; //ctrigger2.JobGroup = ""; scheduler.ScheduleJob(ctrigger); //scheduler.ScheduleJob(ctrigger2); //scheduler.ScheduleJob(job2, ctrigger2); while (true) { string newJob = Console.ReadLine(); if (newJob == "Y") { CronTrigger oldTrigger=(scheduler.GetTrigger("tt", "default") as CronTrigger); CronTrigger newTrigger = (CronTrigger)oldTrigger; newTrigger.CronExpressionString = "0/5 * * * * ?"; //scheduler.ResumeTrigger("tt", "default"); scheduler.UnscheduleJob("tt", "default"); scheduler.ScheduleJob(newTrigger); //scheduler.RescheduleJob("tt", "default", newTrigger); scheduler.DeleteJob("firstJob", "default"); Console.WriteLine("修改了..."); } } #region MyRegion //while(true) //{ // string newJob = Console.ReadLine(); // if(newJob=="Y") // { // JobDetail job2 = new JobDetail("firstJob2", typeof(EmailManger)); // Trigger trigger2 = TriggerUtils.MakeSecondlyTrigger(2); // trigger2.StartTimeUtc = TriggerUtils.GetEvenSecondDate(DateTime.UtcNow); // trigger2.Name = "EmailSender2"; // scheduler.ScheduleJob(job2, trigger2); // } //} //------------------- //Trigger tr = TriggerUtils.MakeDailyTrigger(14, 41); //tr.StartTimeUtc = TriggerUtils.GetEvenSecondDate(DateTime.UtcNow); //tr.Name = "EmailSender" + DateTime.Now.ToString(); //scheduler.ScheduleJob(job,tr); //scheduler.GetTrigger("",""). #endregion //SchedulerFactoryObject sfactory = new SchedulerFactoryObject(); //MethodInvokingJobDetailFactoryObject sjob = new MethodInvokingJobDetailFactoryObject(); //CronTriggerObject }
/// <summary> /// Select a trigger. /// </summary> /// <param name="conn">the DB Connection</param> /// <param name="triggerName">the name of the trigger</param> /// <param name="groupName">the group containing the trigger</param> /// <returns>The <see cref="Trigger" /> object</returns> public virtual Trigger SelectTrigger(ConnectionAndTransactionHolder conn, string triggerName, string groupName) { Trigger trigger = null; string jobName = null; string jobGroup = null; bool volatility = false; string description = null; string triggerType = ""; string calendarName = null; int misFireInstr = Int32.MinValue; int priority = Int32.MinValue; IDictionary map = null; NullableDateTime pft = null; NullableDateTime endTimeD = null; NullableDateTime nft = null; DateTime startTimeD = DateTime.MinValue; using (IDbCommand cmd = PrepareCommand(conn, ReplaceTablePrefix(SqlSelectTrigger))) { AddCommandParameter(cmd, 1, "triggerName", triggerName); AddCommandParameter(cmd, 2, "triggerGroup", groupName); using (IDataReader rs = cmd.ExecuteReader()) { if (rs.Read()) { jobName = GetString(rs[ColumnJobName]); jobGroup = GetString(rs[ColumnJobGroup]); volatility = GetBoolean(rs[ColumnIsVolatile]); description = GetString(rs[ColumnDescription]); long nextFireTime = Convert.ToInt64(rs[ColumnNextFireTime], CultureInfo.InvariantCulture); long prevFireTime = Convert.ToInt64(rs[ColumnPreviousFireTime], CultureInfo.InvariantCulture); triggerType = GetString(rs[ColumnTriggerType]); long startTime = Convert.ToInt64(rs[ColumnStartTime], CultureInfo.InvariantCulture); long endTime = Convert.ToInt64(rs[ColumnEndTime], CultureInfo.InvariantCulture); calendarName = GetString(rs[ColumnCalendarName]); misFireInstr = Convert.ToInt32(rs[ColumnMifireInstruction], CultureInfo.InvariantCulture); priority = Convert.ToInt32(rs[ColumnPriority], CultureInfo.InvariantCulture); if (CanUseProperties) { map = GetMapFromProperties(rs, 15); } else { map = (IDictionary)GetObjectFromBlob(rs, 15); } if (nextFireTime > 0) { nft = new DateTime(nextFireTime); } if (prevFireTime > 0) { pft = new DateTime(prevFireTime); } startTimeD = new DateTime(startTime); if (endTime > 0) { endTimeD = new DateTime(endTime); } // done reading rs.Close(); if (triggerType.Equals(TriggerTypeSimple)) { using (IDbCommand cmd2 = PrepareCommand(conn, ReplaceTablePrefix(SqlSelectSimpleTrigger))) { AddCommandParameter(cmd2, 1, "triggerName", triggerName); AddCommandParameter(cmd2, 2, "triggerGroup", groupName); using (IDataReader rs2 = cmd2.ExecuteReader()) { if (rs2.Read()) { int repeatCount = Convert.ToInt32(rs2[ColumnRepeatCount], CultureInfo.InvariantCulture); long repeatInterval = Convert.ToInt64(rs2[ColumnRepeatInterval], CultureInfo.InvariantCulture); int timesTriggered = Convert.ToInt32(rs2[ColumnTimesTriggered], CultureInfo.InvariantCulture); SimpleTrigger st = new SimpleTrigger(triggerName, groupName, jobName, jobGroup, startTimeD, endTimeD, repeatCount, TimeSpan.FromMilliseconds(repeatInterval)); st.CalendarName = calendarName; st.MisfireInstruction = misFireInstr; st.TimesTriggered = timesTriggered; st.Volatile = volatility; st.SetNextFireTime(nft); st.SetPreviousFireTime(pft); st.Description = description; st.Priority = priority; if (null != map) { st.JobDataMap = new JobDataMap(map); } trigger = st; } } } } else if (triggerType.Equals(TriggerTypeCron)) { using (IDbCommand cmd2 = PrepareCommand(conn, ReplaceTablePrefix(SqlSelectCronTriggers))) { AddCommandParameter(cmd2, 1, "triggerName", triggerName); AddCommandParameter(cmd2, 2, "triggerGroup", groupName); using (IDataReader rs2 = cmd2.ExecuteReader()) { if (rs2.Read()) { string cronExpr = GetString(rs2[ColumnCronExpression]); string timeZoneId = GetString(rs2[ColumnTimeZoneId]); CronTrigger ct = null; try { TimeZone timeZone = null; if (timeZoneId != null) { #if NET_35 timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); #endif } ct = new CronTrigger(triggerName, groupName, jobName, jobGroup, startTimeD, endTimeD, cronExpr, timeZone); } catch (Exception ex) { logger.Warn("Got error from expression, still continuing", ex); // expr must be valid, or it never would have // gotten to the store... } if (null != ct) { ct.CalendarName = calendarName; ct.MisfireInstruction = misFireInstr; ct.Volatile = volatility; ct.SetNextFireTime(nft); ct.SetPreviousFireTime(pft); ct.Description = description; ct.Priority = priority; if (null != map) { ct.JobDataMap = new JobDataMap(map); } trigger = ct; } } } } } else if (triggerType.Equals(TriggerTypeBlob)) { using (IDbCommand cmd2 = PrepareCommand(conn, ReplaceTablePrefix(SqlSelectBlobTrigger))) { AddCommandParameter(cmd2, 1, "triggerName", triggerName); AddCommandParameter(cmd2, 2, "triggerGroup", groupName); using (IDataReader rs2 = cmd2.ExecuteReader()) { if (rs2.Read()) { trigger = (Trigger)GetObjectFromBlob(rs2, 2); } } } } else { throw new Exception("Class for trigger type '" + triggerType + "' not found."); } } } } return trigger; }
/// <summary> /// Make a trigger that will fire every month at the given day and time. /// <p> /// The generated trigger will not have its name, group, /// or end-time set. The Start time defaults to 'now'. /// </p> /// <p> /// If the day of the month specified does not occur in a given month, a /// firing will not occur that month. (i.e. if dayOfMonth is specified as /// 31, no firing will occur in the months of the year with fewer than 31 /// days). /// </p> /// </summary> /// <param name="dayOfMonth">(1-31, or -1) the day of week upon which to fire</param> /// <param name="hour">the hour (0-23) upon which to fire</param> /// <param name="minute">the minute (0-59) upon which to fire</param> /// <returns>the newly created trigger</returns> public static Trigger MakeMonthlyTrigger(int dayOfMonth, int hour, int minute) { ValidateDayOfMonth(dayOfMonth); ValidateHour(hour); ValidateMinute(minute); CronTrigger trig = new CronTrigger(); try { if (dayOfMonth != LastDayOfMonth) { trig.CronExpressionString = string.Format(CultureInfo.InvariantCulture, "0 {0} {1} {2} * ?", minute, hour, dayOfMonth); } else { trig.CronExpressionString = string.Format(CultureInfo.InvariantCulture, "0 {0} {1} L * ?", minute, hour); } } catch (Exception) { return null; /* never happens... */ } trig.StartTimeUtc = DateTime.UtcNow; return trig; }
public void TestSchedulerFactoryObjectWithPlainQuartzObjects() { IJobFactory jobFactory = new AdaptableJobFactory(); TestObject tb = new TestObject("tb", 99); JobDetail jobDetail0 = new JobDetail(); jobDetail0.JobType = typeof (IJob); jobDetail0.Name = ("myJob0"); jobDetail0.Group = (SchedulerConstants.DefaultGroup); jobDetail0.JobDataMap.Add("testObject", tb); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTrigger trigger0 = new CronTrigger(); trigger0.Name = ("myTrigger0"); trigger0.Group = SchedulerConstants.DefaultGroup; trigger0.JobName = "myJob0"; trigger0.JobGroup = SchedulerConstants.DefaultGroup; trigger0.StartTimeUtc = (DateTime.UtcNow); trigger0.CronExpressionString = ("0/1 * * * * ?"); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.Name = ("myJob1"); mijdfb.Group = (SchedulerConstants.DefaultGroup); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject(); SimpleTrigger trigger1 = new SimpleTrigger(); trigger1.Name = "myTrigger1"; trigger1.Group = SchedulerConstants.DefaultGroup; trigger1.JobName = "myJob1"; trigger1.JobGroup = SchedulerConstants.DefaultGroup; trigger1.StartTimeUtc = (DateTime.UtcNow); trigger1.RepeatCount = (SimpleTrigger.RepeatIndefinitely); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); IScheduler scheduler = (IScheduler) mockery.CreateMock(typeof (IScheduler)); Expect.Call(scheduler.JobFactory = (jobFactory)); Expect.Call(scheduler.GetJobDetail("myJob0", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetJobDetail("myJob1", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetTrigger("myTrigger0", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)).Return(null); scheduler.AddJob(jobDetail0, true); LastCall.IgnoreArguments(); scheduler.AddJob(jobDetail1, true); LastCall.IgnoreArguments(); Expect.Call(scheduler.ScheduleJob(trigger0)).Return(DateTime.UtcNow); Expect.Call(scheduler.ScheduleJob(trigger1)).Return(DateTime.UtcNow); scheduler.Start(); scheduler.Shutdown(false); mockery.ReplayAll(); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (jobFactory); schedulerFactoryObject.JobDetails = (new JobDetail[] {jobDetail0, jobDetail1}); schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1}); try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } mockery.VerifyAll(); }
public static Trigger Create(NodeTaskRuntimeInfo nodetask) { CronTrigger triger = new CronTrigger(nodetask.TaskModel.Id.ToString(), nodetask.TaskModel.CategoryId.ToString()); triger.CronExpressionString = nodetask.TaskModel.TaskCron; return triger; }
/// <summary> /// Update the cron trigger data. /// </summary> /// <param name="conn">The DB Connection.</param> /// <param name="trigger">The trigger to insert.</param> /// <returns>The number of rows updated.</returns> public virtual int UpdateCronTrigger(ConnectionAndTransactionHolder conn, CronTrigger trigger) { using (IDbCommand cmd = PrepareCommand(conn, ReplaceTablePrefix(SqlUpdateCronTrigger))) { AddCommandParameter(cmd, 1, "triggerCronExpression", trigger.CronExpressionString); AddCommandParameter(cmd, 2, "triggerName", trigger.Name); AddCommandParameter(cmd, 3, "triggerGroup", trigger.Group); return cmd.ExecuteNonQuery(); } }