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

背景

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

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 。

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

  


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

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();         //关闭调度器。

       }

  


1

2

3

4

5

6

7

8

9

10

/// <summary>

   /// 作业

   /// </summary>

   public class HelloJob : IJob

   {

       public void Execute(IJobExecutionContext context)

       {

           Console.WriteLine("作业执行!");

       }

   }

  


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

---------------------------------------------------------------------------------

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。

Java版本的地址:http://www.quartz-scheduler.org/documentation,.Net版本的地址:http://quartznet.sourceforge.net/ 。

如果手工进行设置Crons表达式,比较繁琐,本文对之前网上提供的Java的Quartz表达生器源代码进行封装打包,

附件中可进行下载,具体如下图:

下载地址:Quartz表达式生成器

时间: 2024-10-13 13:30:46

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

Quartz.NET 入门,带C#实例

概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联.整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业. 参考 官方学习文档:http://www.quartz-scheduler.net/documentation/index.html 使用实例

定时器(Quartz)快速入门

Quartz概述 Quartz中的触发器 Quartz中提供了两种触发器,分别是CronTrigger和SimpleTrigger. SimpleTrigger 每 隔若干毫秒来触发纳入进度的任务.因此,对于夏令时来说,根本不需要做任何特殊的处理来"保持进度".它只是简单地保持每隔若干毫秒来触发一次,无论你的 SimpleTrigger每隔10秒触发一次还是每隔15分钟触发一次,还是每隔24小时触发一次. CronTrigger 在特定"格林日历"时刻触发纳入进程的

转载:Quartz.NET 入门

分享自:http://www.cnblogs.com/jys509/p/4628926.html 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联.整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业. 参考 官方学习文档:http://www.q

Quartz.NET 入门

转自:http://www.cnblogs.com/jys509/p/4628926.html 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据 等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联.整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业. 参考 官方学习文档:http://www.q

【quartz】 入门-配置文件

quartz 启动 NameValueCollection props = (NameValueCollection)ConfigurationManager.GetSection("quartz"); //PropertiesParser cfg = new PropertiesParser(props); ISchedulerFactory sf = new StdSchedulerFactory(props); IScheduler sched = sf.GetScheduler

Quartz之入门实例

http://www.quartz-scheduler.org/ 项目中导入quartz包 新建2个job类 package com.zns.test.quartz; public class Job1 { public void work() { System.out.println("job1 work..."); } } package com.zns.test.quartz; public class Job2 { public void work() { System.out

定时组件quartz系列&lt;二&gt;quartz的集群原理

1.基本信息: Quartz是一个开源的作业调度框架,它完全由java写成,并设计用于J2Se和J2EE应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它 来为执行一个作业而创建简单的或复杂的调度.它有很多特征,如:数据库支持,集群,插件,EJB作业预构建,JavaMail及其它,支持cron- like表达式等等.其中集群配置一般比较复杂,那么在Quartz中如何配置它的集群特性呢? 2 Quartz的集群配置:      2.1 实现集群的基本原理           Quartz是通过

Quartz任务调度[Spring+Quartz结合]_实现任务的动态添加、修改和删除

项目框架图 下面开始贴代码了,不过先贴数据库^^ -- Create table Oracle数据库 create table QUARTZ_SCHEDULEJOB ( id VARCHAR2(32), job_name VARCHAR2(32) not null, job_status NVARCHAR2(3) default 0 not null, cron_expression NVARCHAR2(32) not null, concurrent NVARCHAR2(3) default

实现quartz定时器及quartz定时器原理介绍

一.核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可. 1.Job表示一个工作,要执行的具体内容.此接口中只有一个方法void execute(JobExecutionContext context) 2.JobDetailJobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略. 3.Trigger代表一个调度参数的配置,什么时候去调. 4.Sched