zoukankan      html  css  js  c++  java
  • Quartz.NET入门

    Quartz.NET是一个开源的作业调度框架。

    官网地址:https://www.quartz-scheduler.net/
    目前最新版本为3.0.7,需要.NET Framework 4.5.2及更高版本以上。
    .NET Framework 4.0及以下可以用版本2.6.2。
    本文用的是2.6.2版本,下面为入门例子。

    1、创建2个简单任务

    Hello1Job.cs

    public class Hello1Job : IJob
        {        
            public void Execute(IJobExecutionContext context)
            {           
                LogHelper.Info("hello1");           
            }
        }

    Hello2Job.cs

     public class Hello2Job : IJob
        {        
            public void Execute(IJobExecutionContext context)
            {           
                LogHelper.Info("hello2");           
            }
        }

    2、创建任务服务

    QuartzService.cs

    //引用Quartz、Quartz.Impl;
    public class QuartzService
        {
            //调度器
            IScheduler scheduler;
            public QuartzService()
            {
                //调度器工厂
                ISchedulerFactory factory = new StdSchedulerFactory();
                scheduler = factory.GetScheduler();
            }       
            public void Start()
            {                     
                //创建任务
                IJobDetail job1 = JobBuilder.Create<Hello1Job>().WithIdentity(new JobKey("job1")).Build();
                //创建触发器,配置3秒执行一次
                ITrigger trigger1 = TriggerBuilder.Create().WithCronSchedule("0/3 * * * * ?") .Build();
    
                //创建任务
                IJobDetail job2 = JobBuilder.Create<Hello2Job>().WithIdentity(new JobKey("job2")).Build();
                //创建触发器,配置5秒执行一次
                ITrigger trigger2 = TriggerBuilder.Create().WithCronSchedule("0/5 * * * * ?").Build();
                
                //将任务与触发器添加到调度器中,如果需要多个就绑定多个即可
                scheduler.ScheduleJob(job1, trigger1);
                scheduler.ScheduleJob(job2, trigger2);
    
                //开始执行
                scheduler.Start();
            }
    
            public void Shutdown()
            {
                if (scheduler != null)
                {
                    scheduler.Shutdown(true);
                }
            }
        }

    3、调用

    QuartzService quartzJob = new QuartzService();
    quartzJob.Start();

    运行结果如下:

    2019-06-03 09:52:39,667 [DefaultQuartzScheduler_Worker-1] INFO  logging - hello1
    2019-06-03 09:52:40,000 [DefaultQuartzScheduler_Worker-2] INFO  logging - hello2
    2019-06-03 09:52:42,000 [DefaultQuartzScheduler_Worker-3] INFO  logging - hello1
    2019-06-03 09:52:45,000 [DefaultQuartzScheduler_Worker-4] INFO  logging - hello1
    2019-06-03 09:52:45,000 [DefaultQuartzScheduler_Worker-5] INFO  logging - hello2
    2019-06-03 09:52:48,000 [DefaultQuartzScheduler_Worker-6] INFO  logging - hello1
    2019-06-03 09:52:50,000 [DefaultQuartzScheduler_Worker-7] INFO  logging - hello2
    2019-06-03 09:52:51,000 [DefaultQuartzScheduler_Worker-8] INFO  logging - hello1
    2019-06-03 09:52:54,000 [DefaultQuartzScheduler_Worker-9] INFO  logging - hello1
    2019-06-03 09:52:55,000 [DefaultQuartzScheduler_Worker-10] INFO  logging - hello2
  • 相关阅读:
    const 指针与指向const的指针
    Every breath you take
    数据结构之图(存储结构、遍历)
    六个前端开发工程师必备的Web设计模式/模块资源(转)
    mouseover和mouseout多次触发解决方法(兼容ie和firefox)(转)
    javascript DOM操作HTML文档
    Javascript 严格模式详解(转)
    你需要知道的三个 CSS3技巧(转)
    CommonJS规范(转)
    使用Yeoman,Grunt和Bower开发AngularJS(译)
  • 原文地址:https://www.cnblogs.com/gdjlc/p/10966289.html
Copyright © 2011-2022 走看看