Net作业调度(一) -Quartz.Net

背景

很多时候,项目需要在不同个时刻,执行一个或很多个不同的作业。

Windows执行计划这时并不能很好的满足需求了。 这时候需要一个更为强大,方便管理,支持集群的作业调度了。

介绍

Quartz一个开源的作业调度框架,OpenSymphony的开源项目。Quartz.Net 是Quartz的C#移植版本。

它一些很好的特性:

1:支持集群,作业分组,作业远程管理。

2:自定义精细的时间触发器,使用简单,作业和触发分离。

3:数据库支持,可以寄宿Windows服务,WebSite,winform等。

实战

一:一些基础概念。

  Scheduler     作业度器。

  IJob             作业接口。 继承并实现Execute, 编写执行的具体作业逻辑。

  JobBuilder       根据设置,生成一个详细作业信息(JobDetail)。

  TriggerBuilder   根据规则,生产对应的Trigger

二:Nuget安装  PM> Install-Package Quartz 。

三:实例 (详细注释,不单独介绍)。

  

 static void Main(string[] args)
        {
            //从工厂中获取一个调度器实例化
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();

            scheduler.Start();       //开启调度器

            //==========例子1(简单使用)===========

            IJobDetail job1 = JobBuilder.Create<HelloJob>()  //创建一个作业
                .WithIdentity("作业名称", "作业组")
                .Build();

            ITrigger trigger1 = TriggerBuilder.Create()
                                        .WithIdentity("触发器名称", "触发器组")
                                        .StartNow()                        //现在开始
                                        .WithSimpleSchedule(x => x         //触发时间,5秒一次。
                                            .WithIntervalInSeconds(5)
                                            .RepeatForever())              //不间断重复执行
                                        .Build();

            scheduler.ScheduleJob(job1, trigger1);      //把作业,触发器加入调度器。

            //==========例子2 (执行时 作业数据传递,时间表达式使用)===========

            IJobDetail job2= JobBuilder.Create<DumbJob>()
                                        .WithIdentity("myJob", "group1")
                                        .UsingJobData("jobSays", "Hello World!")
                                        .Build();

            ITrigger trigger2 = TriggerBuilder.Create()
                                        .WithIdentity("mytrigger", "group1")
                                        .StartNow()
                                        .WithCronSchedule("/5 * * ? * *")    //时间表达式,5秒一次
                                        .Build();

            scheduler.ScheduleJob(job2, trigger2);      

            //scheduler.Shutdown();         //关闭调度器。
        }

  

 /// <summary>
    /// 作业
    /// </summary>
    public class HelloJob : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine("作业执行!");
        }
    }

  

public class DumbJob : IJob
    {
        /// <summary>
        ///  context 可以获取当前Job的各种状态。
        /// </summary>
        /// <param name="context"></param>
        public void Execute(IJobExecutionContext context)
        {

            JobDataMap dataMap = context.JobDetail.JobDataMap;

            string content = dataMap.GetString("jobSays");

            Console.WriteLine("作业执行,jobSays:" + content);
        }
    }

其他

WithCronSchedule("") 强大的时间表达式。

WithSimpleSchedule(x) 一般够用了。

参考资源

Quartz.Net官方2.X教程  http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/index.html

Quartz.Net开源地址   https://github.com/quartznet/quartznet

时间: 2024-11-07 04:43:22

Net作业调度(一) -Quartz.Net的相关文章

作业调度框架 Quartz.NET 2.0 StepByStep

注:目前网上诸多介绍Quartz.net的文章,甚至Quartz.net官网上的Tutorial都是1.0版本的,而这个项目在2.0版本对项目进行了比较大规模的修改,使得原有的很多例子都不能运行,故写此文.由于本人是边学边用,加之技术写作水平皆有限,错误自然难免,望轻拍,我将不定时更新完善此贴,希望能为需要的朋友提供帮助. 1. 项目介绍 现今的系统,业务数据是越来越大,传统的同步处理方式有时候已经不能满足用户需求,定时后台服务这种异步数据处理形式则逐渐被大家接受.相信大家在平时的工作中也经常遇

Net作业调度(二) - Quartz.Net进阶

介绍 前面我们介绍Quartz.Net的基本用法,但在实际应用中,往往有更多的特性需求.   比如记录job执行的执行历史,发邮件等. 目录 1:Quartz.Net插件 2:TriggerListener,JobListener 3:Cron表达式 4:Quartz.Net 线程池 5:总结 Quartz.Net插件 Quartz.net 自身提供了一个插件接口(ISchedulerPlugin)用来增加附加功能. 我们来看下官方定义: public interface ISchedulerP

Net作业调度(一) -Quartz.Net入门 Quartz表达式生成器 [转]

背景 很多时候,项目需要在不同个时刻,执行一个或很多个不同的作业. Windows执行计划这时并不能很好的满足需求了. 这时候需要一个更为强大,方便管理,集部署的作业调度了. 介绍 Quartz一个开源的作业调度框架,OpenSymphony的开源项目.Quartz.Net 是Quartz的C#移植版本. 它一些很好的特性: 1:支持集群,作业分组,作业远程管理. 2:自定义精细的时间触发器,使用简单,作业和触发分离. 3:数据库支持,可以寄宿Windows服务,WebSite,winform等

.Net平台开源作业调度框架Quartz.Net

Quartz.NET介绍: Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度.它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等. Quartz.Net的cron表达式: 一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 字段   允许值   允许的

开源作业调度框架 - Quartz.NET - 实战使用2

纠正第一篇文章的一个错误代码. 下面是错误代码,这样并不能得知系统中是否已经存在该JobId //实例化一个作业Key对象,用于获取作业对象或判断是否存在作业时使用. JobKey jobKey = new JobKey(identity); //通过作业Ke对象 获取已经添加过同一个作业,(如果没有为NULL) IJobDetail job = scheduler.GetJobDetail(jobKey); //检查调度中是否存在该作业,存在并且参数有变化就删除作业. if (schedule

Net作业调度

Net作业调度(一) -Quartz.Net入门 2014-11-01 13:14 by 蘑菇先生, 13954 阅读, 7 评论, 收藏, 编辑 背景 很多时候,项目需要在不同时刻,执行一个或很多个不同的作业. Windows执行计划这时并不能很好的满足需求了,迫切需要一个更为强大,方便管理,集群部署的作业调度框架. 介绍 Quartz一个开源的作业调度框架,OpenSymphony的开源项目.Quartz.Net 是Quartz的C#移植版本. 它一些很好的特性: 1:支持集群,作业分组,作

通过Job,Trigger,Scheduler看Quartz2.x作业调度框架

最近使用到Quartz框架来做定时推送数据的功能的调度(注:在Java可以使用java.util.Timer和实现java.util.TimerTask接口的类做定时任务功能). 本文主要从大的框架方面介绍Quartz的基本使用和Quartz对用户提供的扩展点JobListener等监听接口. 通常对于作业调度我们关注这三个方面的内容:作业,调度时间,由谁调度.比如:我明天去北京.这就好中,将"去北京"看做一个作业,"我"就是这个作业的调度者,而"明天&q

定时器--Quartz.Net

这次由于项目的需求:什么定时发送邮件通知,定时筛选取消客户下单未支付的订单 重新捡起定时器,在网上翻来找去找到----Quartz.Net老字号了并不表示它就真的老了哦 github:https://github.com/quartznet/quartznet 当然介绍的园子里文章很多跟官方文档https://www.quartz-scheduler.net介绍的都挺清楚的!用起来很简便! so!接下来我简单介绍一下Quartz.Net框架设计  下图借用园友的应该不会介意 园子中搜索发现已经有

Java就业指导

想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向面试官展示这些专业技能.相信此文对正在寻觅Java程序员(Java工程师)职位的freshman以及希望成为中高级Java开发者的junior都会有所帮助. 专业技能 熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java A