zoukankan      html  css  js  c++  java
  • .NET中Quartz任务调度器的简单应用实例

    1.首先从NuGet中安装Quartz,安装最新版本就OK

    2.新建一个Job类实现Quart中的IJob接口用于执行业务逻辑,代码如下:

        class CheckUpdateJob : IJob
        {
           
            public async Task Execute(IJobExecutionContext context)
            {
                //在此处实现业务
            }
        }

    3.新建一个任务执行类用于启动任务,代码如下:

        class JobController
        {
            //调度器
            IScheduler scheduler;
            //调度器工厂
            ISchedulerFactory factory; 
            //执行时间间隔
            private int checkInternal = int.Parse(ConfigurationManager.AppSettings["CheckInternal"]);
            public async Task Start()
            {
                factory = new StdSchedulerFactory();
                scheduler = await factory.GetScheduler();//创建一个任务
                IJobDetail jobCheck = JobBuilder.Create<CheckUpdateJob>().WithIdentity("check", "other").Build();
                //创建一个触发器
                ITrigger checkTrigger = TriggerBuilder.Create()
                   .WithIdentity("check", "other")
                   .WithSchedule(SimpleScheduleBuilder.Create().WithIntervalInSeconds(checkInternal).RepeatForever())
                   .StartNow()
                   .Build();
                //把任务和触发器加入调度器中
                await scheduler.ScheduleJob(jobCheck, checkTrigger);
    
                //开始执行
                await scheduler.Start(); 
            }
        }

    对于标黄色部分做简单说明

    CheckUpdateJob:毫无疑问就是你的Job类。从源码里面看必须是需要实现IJob接口的类,源码如图:

    check:自定义的Job别名,当有很多的Job需要执行的时候,可以使用别名区分。

    other:自定义分组别名,当你有多Job的时候可以把Job进行分组,例如:订单,数据清理等;当你需要对Job管理的时候便会派上用场。

    ITrigger 中的check,other道理同上

    checkInternal:这个参数为轮询间隔秒数,这里我只做个简单间隔秒数轮询方式执行Job,其内置了丰富的方式。比如:每月的第几号,每周的星期几,上午或者下午时间点等

     其他更多的应用可自行度娘或者看官方文档吧!

    4.最后调用Start()即可,代码如下:

            static void Main(string[] args)
            {
                JobController controller = new JobController();
                var t = controller.Start();
                t.Wait();
                Console.Read();
            }

      

  • 相关阅读:
    hdu-5112-A Curious Matt
    nyoj-47-过河问题|POJ-1700-Crossing River
    nyoj-914-Yougth的最大化
    nyoj-1103-区域赛系列一多边形划分
    nyoj-586-疯牛|poj-2456-Aggressive cows
    nyoj-248-buying feed
    nyoj-236-心急的C小加
    nyoj-14-会场安排问题
    Codeforces Round #277.5 (Div. 2)-D. Unbearable Controversy of Being
    Codeforces Round #277.5 (Div. 2)-C. Given Length and Sum of Digits...
  • 原文地址:https://www.cnblogs.com/wuzhixiong/p/9996822.html
Copyright © 2011-2022 走看看