• 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统一调度。

  • 相关阅读:
    (转)超过 130 个你需要了解的 vim 命令
    ubuntu下解压文件命令大全(转)
    HDU 4681 String
    Linux使用过程中常见问题及其解决方法
    Linux 命令 及 简单操作 学习
    HDU 4666 Hyperspace (最远曼哈顿距离)
    POJ 2049 Finding Nemo
    HDU 4655 Cut Pieces
    <textarea>标签的使用
    数据库插入失败 和回滚
  • 原文地址:https://www.cnblogs.com/pangzili/p/8748933.html
Copyright © 2020-2023  润新知