`
yimeng528
  • 浏览: 183859 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第九节:Quartz中的作业

阅读更多

做为使用quartz的我们,其实最关心的就jobjob里面会实现我们要执行的业务代码,相对于调度器触发器来讲,job相对简单一些。

 

先睹图为快:

 

我们继承IJob接口定义的job会被封装到JobDetailImpl中,JobDetailImpl还包括其它属性,比如唯一标识jobJobKey(如上图),可见记录job状态的JobDataMap(如上图),还有就是是否支持持久化,Ijob,等等一些其它的属性

 

至于IJobExecutionContext可以叫做job执行上下文,里面比如会有当前的触发器,当前作业,调度器这些东东。

 

当初始化IJobDetail的时候是用JobBuilder来完成的。

比如:IJobDetail myJob =JobBuilder.Create<MyJob>().WithIdentity("j1").Build();

 

前面几节大家已经会实现自己的job了,今天来实现一个能记录执行过程中的数据的job,很简单,直接看代码吧:

 

1job代码(和旧版的写法不一样)

[csharp] view plaincopy
  1. [PersistJobDataAfterExecution]//保存执行状态  
  2. [DisallowConcurrentExecution]//不允许并发执行  
  3. public class MyJob : IJob  
  4. {  
  5.     public void Execute(IJobExecutionContext context)  
  6.     {  
  7.         int exeCount = context.JobDetail.JobDataMap.GetInt("exeCount");  
  8.   
  9.         Console.WriteLine("我执行了,时间:{0} 第{1}次执行", DateTime.Now, exeCount);  
  10.   
  11.         context.JobDetail.JobDataMap.Put("exeCount", ++exeCount);  
  12.     }  
  13. }  


 

 

2:调度代码:

 

[csharp] view plaincopy
  1. static void Main(string[] args)  
  2.        {  
  3.            //调度器  
  4.            ISchedulerFactory sf = new StdSchedulerFactory();  
  5.            IScheduler sched = sf.GetScheduler();  
  6.   
  7.            //job详情,注意MyJob  
  8.            IJobDetail myJob = JobBuilder.Create<MyJob>()  
  9.               .WithIdentity("j1")  
  10.               .Build();  
  11.   
  12.            //触发器,用的简单触发器,每隔5秒执行一次  
  13.            ITrigger trigger = TriggerBuilder.Create().WithSimpleSchedule(t => t.RepeatForever().WithIntervalInSeconds(5))  
  14.                .WithIdentity("t1")  
  15.                .Build();  
  16.   
  17.            //关联job和触发器  
  18.            sched.ScheduleJob(myJob, trigger);  
  19.   
  20.            //执行  
  21.            sched.Start();  
  22.   
  23.            Console.Read();  
  24.   
  25.            //关掉  
  26.            sched.Shutdown(true);  
  27.        }  


 

 

3执行结果 :

 

总结:进一步了解了作业原理。

 

 

全部代码:

[csharp] view plaincopy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using Quartz.Impl;  
  6.   
  7. namespace Quartz.Demo  
  8. {  
  9.     class Class5  
  10.     {  
  11.         static void Main(string[] args)  
  12.         {  
  13.             //调度器  
  14.             ISchedulerFactory sf = new StdSchedulerFactory();  
  15.             IScheduler sched = sf.GetScheduler();  
  16.   
  17.             //job详情,注意MyJob  
  18.             IJobDetail myJob = JobBuilder.Create<MyJob>()  
  19.                .WithIdentity("j1")  
  20.                .Build();  
  21.   
  22.             //触发器,用的简单触发器,每隔5秒执行一次  
  23.             ITrigger trigger = TriggerBuilder.Create().WithSimpleSchedule(t => t.RepeatForever().WithIntervalInSeconds(5))  
  24.                 .WithIdentity("t1")  
  25.                 .Build();  
  26.   
  27.             //关联job和触发器  
  28.             sched.ScheduleJob(myJob, trigger);  
  29.   
  30.             //执行  
  31.             sched.Start();  
  32.   
  33.             Console.Read();  
  34.   
  35.             //关掉  
  36.             sched.Shutdown(true);  
  37.         }  
  38.     }  
  39.   
  40.     [PersistJobDataAfterExecution]//保存执行状态  
  41.     [DisallowConcurrentExecution]//不允许并发执行  
  42.     public class MyJob : IJob  
  43.     {  
  44.         public void Execute(IJobExecutionContext context)  
  45.         {  
  46.             int exeCount = context.JobDetail.JobDataMap.GetInt("exeCount");  
  47.   
  48.             Console.WriteLine("我执行了,时间:{0} 第{1}次执行", DateTime.Now, exeCount);  
  49.   
  50.             context.JobDetail.JobDataMap.Put("exeCount", ++exeCount);  
  51.         }  
  52.     }  
分享到:
评论

相关推荐

    quartz-2.3.2-API文档-中文版.zip

    赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...

    quartz-2.3.0-API文档-中文版.zip

    赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...

    作业调度:Quartz

    Quartz 是个开源的作业调度框架,为在Java 应用程序中进行作业调度提供了简单而强大的机制。Quartz 允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。...

    quartz-2.3.0-API文档-中英对照版.zip

    赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...

    Quartz(作业调度)

    1.spring框架使用任务调度quartz的例子。 2.Web App用Quartz实现java schedule 3.详细讲解Quartz如何从入门到精通 4.用 Quartz 进行作业调度

    quartz指南,Quartz 工程

    文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...

    Spring线程时间配置:Quartz和CronExpression

    Spring自带了多线程设置:quartz,在quartz的设置中,时间字段CronExpression的设置比较纠结,一个Cron表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,文档详细讲解了这个...

    quartz-2.3.2-API文档-中英对照版.zip

    赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...

    quartz-1.6.1-API文档-中文版.zip

    赠送jar包:quartz-1.6.1.jar; 赠送原API文档:quartz-1.6.1-javadoc.jar; 包含翻译后的API文档:quartz-1.6.1-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.opensymphony.quartz,...

    quartz-1.6.1-API文档-中英对照版.zip

    赠送jar包:quartz-1.6.1.jar 赠送原API文档:quartz-1.6.1-javadoc.jar 包含翻译后的API文档:quartz-1.6.1-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org.opensymphony.quartz,...

    4个案例:Quartz2D图片处理

    通过4个案例认识quartz2D的图形处理 典型应用:生成圆形头像

    LocalICM:Quartz.NET作业调度

    Quartz.NET作业调度

    Quartz - 作业调度框架

    Quartz,作业调度框架,简单的作业调度,定时,junit测试quartz

    quartz-all-1.6.1.jar

    Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,...

    spring-Quartz(作业调度)

    Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的...

    quartz开源作业调度框架

    作业调度Quartz.net源代码

    作业调度Quartz.net源代码,博客介绍地址:http://www.cnblogs.com/jys509/p/4628926.html

    Quartz作业调度器

    QuartZ和Spring进行整合,让你更了解QuartZ作业调度器的用法

    quartz-1.6.2.zip

    quartz-1.6.2最新包,Quartz 是什么,大概不需多加说明,简单讲就是一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细。

    Quartz.net作业调度自定义定时执行任务多任务执行c#

    Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等

Global site tag (gtag.js) - Google Analytics