Quartz(时间服务器)学习笔记

Quartz(时间服务器)学习笔记

ID:38168025

大小:72.44 KB

页数:13页

时间:2019-06-06

Quartz(时间服务器)学习笔记_第1页
Quartz(时间服务器)学习笔记_第2页
Quartz(时间服务器)学习笔记_第3页
Quartz(时间服务器)学习笔记_第4页
Quartz(时间服务器)学习笔记_第5页
资源描述:

《Quartz(时间服务器)学习笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Quartz.NETQuartz.NET是一个开源的作业调度框架,能够应用在小到轻量级的应用程序,大到重量级的企业级系统中的全功能的开源任务调度系统。一、特点·API操作简单,只要几行简单的代码你就可以在应用程序里面实现自己的作业调度,并实时监视作业执行情况。·触发器功能强大,比Windows的任务计划提供更细的触发粒度,可以使用“Cron表达式”(类似于正则表达式)。·良好的可扩展性,它基于接口编程,你可以实现自己的Schedule调度器,Job作业,以及Trigger触发器等。·作业可以保存在RAM中,也可以持久化到数据库,支持多种数据库类型:SqlServer、O

2、racle、MySql等。·集群,这是一个高级应用,可以在多台计算机之间创建负载平衡、容错处理。·支持两种途径配置应用程序的运行时属性:声明式和编程式。二、Quartz的目录结构内容目录名存放内容Quartz.Collection数据结构Quartz.Core调度器,线程池Quartz.Impl接口实现类Quartz.Job作业Quartz.Listener监听器Quartz.Plugin扩展插件Quartz.Simpl简单的调试器、线程池Quartz.SPI接口Quartz.Util实用方法Quartz.XmlXml配置操作类三、作业流程的定制作业流程是在调度器的统一

3、调度下完成的,它可以调度多个作业,触发器提供作业执行的条件(每天8:00am),触发器与作业关联,它们是1:N的关系。1.JobJob每一个QuartzJob必须有一个实现IJob接口的具体类。这个接口仅有一个要在Job中实现的方法,execute(),方法execute()的原型如下:void Execute(JobExecutionContext context);可以在execute()方法中执行你的业务逻辑:例如,也许你会调用其他构造的实例上的方法,发送一个电子邮件、FTP传一个文件、调用一个Web服务、执行一个工作流等。当Quartz 调用execute()方

4、法,会传递一个JobExecutionContext 上下文变量,里面封装有Quartz的运行时环境和当前正执行的Job。通过JobExecutionContext ,你可以访问到调度器的信息,作业和作业上的触发器的信息,还有更多更多的信息。例如:publicclassTestJobImpl:IExtendedJob{privatestringjobContent;publicstringJobContent{get{returnjobContent;}set{jobContent=value;}}publicTestJobImpl():base(){}publicvo

5、idExecute(JobExecutionContextcontext){jobContent=context.MergedJobDataMap.Get("JobContent").ToString();System.Diagnostics.ProcessStartInfostartInfo=newProcessStartInfo();startInfo.FileName=jobContent;startInfo.WindowStyle=ProcessWindowStyle.Normal;Processpro=newProcess();pro.StartInfo=st

6、artInfo;pro.Start();pro.WaitForExit(5000);pro.Kill();}}IStatefulJob(有状态Job)一个Job实例可以被定义为“有状态的”或者“无状态的”。在执行无状态的任务过程中任何对JobDataMap所作的更改都将丢失。有状态的任务恰好相反,它在任务的每次执行之后重新存储JobDataMap。有状态任务的一个缺点就是它不能并发执行。也就是说,如果任务有状态,那么当触发器试图触发它,触发器就会被阻塞直到前面的执行完成。想使任务有状态,它就要实现IStatefulJob接口而不是实现IJob接口。IStatefulJo

7、b接口仅仅是扩展了Job接口,未加入新的方法。你只需要通过使用与Job接口相同的execute()方法简单的实现IStatefulJob接口即可。假如你有已存在的Job类,你所有要做的只是改变Job的接口为IStatefulJob。Public interface IStatefulJob : IJob     {     }IInterruptableJob(中断Job)它扩展了普通的Job接口并提供了一个interrupt()方法:有时候需要能中断一个Job,尤其是对于一个长时间执行的Job。例如,假定你有一个Job运行过程要花费一个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。