webapi+Quartz.NET解决若干定时程序同时运行的问题

项目现状:

有若干定时程序需要自启动运行,为了简便程序部署等问题,采取这种办法把定时程序集中管理到webapi中跟随api发布

代码架构介绍:

新建一个类库,类库引用Quartz(Quartz.2.3.2),每个需要统一管理的程序新建一个文件,其中包括处理程序类和接口

类库中做一个接口静态类,便于api的Application_Start方法调用

其中JobScheduler类的静态方法如下:

 public static void Start()
        {                   
            StdSchedulerFactory factory = new StdSchedulerFactory();
            IScheduler scheduler = factory.GetScheduler();        

            /*-------------计划任务代码实现------------------*/
            //创建任务1
            IJobDetail job = JobBuilder.Create<CityData.CityDataCaiji>().Build();
            //创建触发器1
            ITrigger trigger = TriggerBuilder.Create().WithIdentity("TimeTrigger", "TimeGroup")
                .WithSimpleSchedule(t => t
                .WithIntervalInMinutes(5)
                .RepeatForever())
                .Build();

           //创建任务2
            IJobDetail job1 = JobBuilder.Create<DataBaseBackup.DatabaseBackup>().Build();
            //创建触发器2
            ITrigger trigger1 = TriggerBuilder.Create().WithIdentity("TimeTrigger1", "TimeGroup1")
                .WithSimpleSchedule(t => t
                .WithIntervalInMinutes(10)
                .RepeatForever())
                .Build();
            //添加任务及触发器至调度器中
            scheduler.ScheduleJob(job, trigger);
            scheduler.ScheduleJob(job1, trigger1);
            scheduler.Start();
        

        }

每个定时程序分别差功能键自己的任务和触发器,由scheduler统一调度。

原文地址:https://www.cnblogs.com/pangzili/p/8748933.html