做为使用quartz的我们,其实最关心的就job,job里面会实现我们要执行的业务代码,相对于调度器触发器来讲,job相对简单一些。
先睹图为快:
我们继承IJob接口定义的job会被封装到JobDetailImpl中,JobDetailImpl还包括其它属性,比如唯一标识job的JobKey(如上图),可见记录job状态的JobDataMap(如上图),还有就是是否支持持久化,Ijob,等等一些其它的属性
至于IJobExecutionContext可以叫做job执行上下文,里面比如会有当前的触发器,当前作业,调度器这些东东。
当初始化IJobDetail的时候是用JobBuilder来完成的。
比如:IJobDetail myJob =JobBuilder.Create<MyJob>().WithIdentity("j1").Build();
前面几节大家已经会实现自己的job了,今天来实现一个能记录执行过程中的数据的job,很简单,直接看代码吧:
1:job代码(和旧版的写法不一样):
- [PersistJobDataAfterExecution]//保存执行状态
- [DisallowConcurrentExecution]//不允许并发执行
- public class MyJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- int exeCount = context.JobDetail.JobDataMap.GetInt("exeCount");
- Console.WriteLine("我执行了,时间:{0} 第{1}次执行", DateTime.Now, exeCount);
- context.JobDetail.JobDataMap.Put("exeCount", ++exeCount);
- }
- }
2:调度代码:
- static void Main(string[] args)
- {
- //调度器
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler();
- //job详情,注意MyJob
- IJobDetail myJob = JobBuilder.Create<MyJob>()
- .WithIdentity("j1")
- .Build();
- //触发器,用的简单触发器,每隔5秒执行一次
- ITrigger trigger = TriggerBuilder.Create().WithSimpleSchedule(t => t.RepeatForever().WithIntervalInSeconds(5))
- .WithIdentity("t1")
- .Build();
- //关联job和触发器
- sched.ScheduleJob(myJob, trigger);
- //执行
- sched.Start();
- Console.Read();
- //关掉
- sched.Shutdown(true);
- }
3执行结果 :
总结:进一步了解了作业原理。
全部代码:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Quartz.Impl;
- namespace Quartz.Demo
- {
- class Class5
- {
- static void Main(string[] args)
- {
- //调度器
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler();
- //job详情,注意MyJob
- IJobDetail myJob = JobBuilder.Create<MyJob>()
- .WithIdentity("j1")
- .Build();
- //触发器,用的简单触发器,每隔5秒执行一次
- ITrigger trigger = TriggerBuilder.Create().WithSimpleSchedule(t => t.RepeatForever().WithIntervalInSeconds(5))
- .WithIdentity("t1")
- .Build();
- //关联job和触发器
- sched.ScheduleJob(myJob, trigger);
- //执行
- sched.Start();
- Console.Read();
- //关掉
- sched.Shutdown(true);
- }
- }
- [PersistJobDataAfterExecution]//保存执行状态
- [DisallowConcurrentExecution]//不允许并发执行
- public class MyJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- int exeCount = context.JobDetail.JobDataMap.GetInt("exeCount");
- Console.WriteLine("我执行了,时间:{0} 第{1}次执行", DateTime.Now, exeCount);
- context.JobDetail.JobDataMap.Put("exeCount", ++exeCount);
- }
- }
相关推荐
赠送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...
赠送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 是个开源的作业调度框架,为在Java 应用程序中进行作业调度提供了简单而强大的机制。Quartz 允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。...
赠送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...
1.spring框架使用任务调度quartz的例子。 2.Web App用Quartz实现java schedule 3.详细讲解Quartz如何从入门到精通 4.用 Quartz 进行作业调度
文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...
Spring自带了多线程设置:quartz,在quartz的设置中,时间字段CronExpression的设置比较纠结,一个Cron表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,文档详细讲解了这个...
赠送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...
赠送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,...
赠送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的图形处理 典型应用:生成圆形头像
Quartz.NET作业调度
Quartz,作业调度框架,简单的作业调度,定时,junit测试quartz
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,...
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的...
作业调度Quartz.net源代码,博客介绍地址:http://www.cnblogs.com/jys509/p/4628926.html
QuartZ和Spring进行整合,让你更了解QuartZ作业调度器的用法
quartz-1.6.2最新包,Quartz 是什么,大概不需多加说明,简单讲就是一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细。
Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等