首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

基于Spring的任务调度(三)

2012-10-19 
基于Spring的任务调度(3)2 使用OpenSymphony Quartz来调度任务?? ? ?开源Quartz项目是一个专用的任务调度

基于Spring的任务调度(3)

2 使用OpenSymphony Quartz来调度任务

?? ? ?开源Quartz项目是一个专用的任务调度引擎,它可以在Java EE和Java SE中使用。Quartz提供了极其全面的特性,例如持久化任务、集群和分布式事务。在本文中不会涉及集群或分布式事务的特性--你可以在www.opensymphony.com/quartz发现更多的信息。Spring对Quartz的集成与Spring对Timer的集成在任务的声明式配置、触发器和调度上都非常相似。除此之外,Spring还提供额外的任务持久化特性,可以让Quartz的调度加入到Spring事务管理机制中。

2.1 Quartz简介

?? ? ?Quartz是一个极其强大的任务调度引擎,我们不能期望在本文的剩余部分中覆盖到Quartz的所有方面。但是我们将讨论Quartz与Spring相关的主要方面,同时我们也将介绍如何在Spring应用程序中使用Quartz。和我们对Timer的介绍一样,我们先对Quartz有一个初步了解,然后再讨论Quartz与Spring的集成。 Quartz的核心由两个接口和两个类组成:Job和Scheduler接口,JobDetail和Trigger类。从它们的名字可以了解它们的主要用途。只有JobDetail类的角色不太清晰。不同于基于Timer的任务调度,任务并不是从一个实现Job接口的类的实例开始的。实际上,Quartz将在它需要时再创建Job类的实例。你可以使用JobDetail类封装任务状态,并传递信息给一个任务或在任务的连续执行中间保存信息。使用基于Timer的任务调度,并没有关于自己封装触发器逻辑的触发器概念。Quartz支持一种可插拔触发器的架构,这可以让你在合适的时机创建你自己的实现。但是,你很少会需要创建你自己的Trigger实现,因为Quartz已经提供了极其强大的CronTrigger类,可以让你使用Cron表达式来对任务执行进行细粒度的控制。

1.) 简单的任务调度

?? ? ?用Quartz创建一个任务你只需简单创建一个实现Job接口的类。Job接口定义了一个execute()方法,你可以用它调用你的业务逻辑。Quartz传递JobExecutionContext实例给execute()方法,这可以让你访问当前执行任务的上下文数据。我们将在"使用JobDataMap类"小节详细介绍它。例14展示了一个简单的Job实现,它只向标准输出发送"Hello World"消息。例14 创建一个简单任务

(日历包括星期五)或者第一天(日历不包括星期五)


?

热点排行