Quartz作业调度

interface INJob : IJob
    {
        ITrigger DefTrigger();
    }

    public class NewBillMonthlySocialJob : INJob
    {
        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine("1234");
        }

        public ITrigger DefTrigger()
        {
            ITrigger trigger2 = TriggerBuilder.Create()
                                      .WithIdentity("mytrigger", "group1")
                                      .StartNow()
                                      .WithCronSchedule("/5 * * ? * *")    //时间表达式,5秒一次     
                                      .Build();
            //// 每天23点0分执行
            //return TriggerBuilder.Create().WithCronSchedule("0 0 23 * * ?").Build();
            return trigger2;
        }
    }

    public class JobScheduler
    {
        private IScheduler scheduler;
        private static JobScheduler single;

        public static JobScheduler Single
        {
            get
            {
                if (single == null)
                    single = new JobScheduler();

                return single;
            }
        }
        private JobScheduler()
        {
            scheduler = StdSchedulerFactory.GetDefaultScheduler();
            INJob[] jobs = GetJobs();
            foreach (var job in jobs)
            {
                scheduler.ScheduleJob(JobBuilder.Create(job.GetType()).Build(), job.DefTrigger());
            }
        }
        private INJob[] GetJobs()
        {
            List<INJob> jobs = new List<INJob>();

            Type[] types = Assembly.GetCallingAssembly().GetTypes();
            foreach (var type in types)
            {
                if (type == typeof(INJob)) continue;

                if (typeof(INJob).IsAssignableFrom(type))
                {
                    jobs.Add((INJob)Activator.CreateInstance(type));
                }
            }

            return jobs.ToArray();
        }

        public void Start()
        {
            scheduler.Start();
        }
    }
View Code
        static void Main(string[] args)
        {
            JobScheduler.Single.Start();
            Console.Read();
        }
View Code

时间设置规则

 "0 0 12 * * ?"   每天中午12  点触发 
 "0 15 10 ? * *" 每天上午10:15触发 
 "0 15 10 * * ?" 每天上午10:15触发 
0 0/30 * * * *   每个三十分钟
Quartz.NET的CronTrigger中第一部分表示秒,然后是分,小时,日期,月份,星期
   ITrigger trigger1 = TriggerBuilder.Create()
                                       .WithIdentity("触发器名称", "触发器组")
                                       .StartNow()                        //现在开始
                                       .WithSimpleSchedule(x => x         //触发时间,5秒一次。
                                           .WithIntervalInSeconds(5)
                                           .RepeatForever())              //不间断重复执行
                                       .Build();
View Code

 

posted @ 2016-12-06 17:38  江境纣州  阅读(16)  评论(0)    收藏  举报