你曾经需要应用执行一个任务吗?这个任务天天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中假如发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用Java编程吗?假如这些问题中任何一个你回答是,那么你应该使用Quartz调度器。
旁注:Matrix目前就大量使用到了Quartz。比如,排名统计功能的实现,在Jmatrix里通过Quartz定义了一个定时调度作业,在天天凌晨一点,作业开始工作,重新统计大家的Karma和排名等。
还有,RSS文件的生成,也是通过Quartz定义作业,每隔半个小时生成一次RSS XML文件。
所以Quartz使用的地方很多,本文无疑是一篇很好的入门和进阶的文章,在此,感谢David w Johnson的努力!
Quartz让作业调度简单
Quartz是一个完全由java编写的开源作业调度框架。不要让作业调度这个术语吓着你。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了!。简单地创建一个实现org.quartz.Job接口的java类。Job接口包含唯一的方法:
public void execute(JobExecutionContext context)
throws JobExecutionException;
在你的Job接口实现类里面,添加一些逻辑到execute()方法。一旦你配置好Job实现类并设定好调度时间表,Quartz将密切注重剩余时间。当调度程序确定该是通知你的作业的时候,Quartz框架将调用你Job实现类(作业类)上的execute()方法并答应做它该做的事情。无需报告任何东西给调度器或调用任何特定的东西。仅仅执行任务和结束任务即可。假如配置你的作业在随后再次被调用,Quartz框架将在恰当的时间再次调用它。
假如你使用了其它流行的开源框架象struts,你会对Quartz的设计和部件感到舒适。虽然两个开源工程是解决完全不同的问题,还是有很多相似的之处,就是开源软件用户天天感觉很舒适。Quartz能用在单机J2SE应用中,作为一个RMI服务器,也可以用在web应用中,甚至也可以用在J2EE应用服务器中。
Quartz的发展史
尽管Quartz今年开始受到人们注重,但还是暂时流行。Quartz由James House创建并最初于2001年春天被加入sourceforge工程。接下来的几年里,有许多新特征和版本出现,但是直到项目迁移到新的站点并成为OpenSymphony项目家族的一员,才开始真正启动并受到应有的关注。
James House仍然和几个协助他的业余开发者参与大量开发工作。Quartz开发团队今年能发布几个新版本,包括当前正处在候选发布阶段的1.5版。
上手Quartz
Quartz工程驻留在OpenSymphony站点上。在Quartz站点上可以找到许多有用的资源:JavaDocs,包含指南的文档,CVS访问,用户和开发者论坛的连接,当然也有下载。
从下载连接取得Quartz的发布版本,并且解压到到本地目录。这个下载文件包含了一个预先构建好的Quartz二进制文件(quartz.jar),你可以将它放进自己的应用中。Quartz框架只需要少数的第三方库,并且这些三方库是必需的,你很可能已经在使用这些库了。
你要把Quartz的安装目录的<quartz- install>/lib/core 和 <quartz-install>/lib/optional目录中的第三方库加进你自己的工程中。大多数第三方库是我们所熟知和喜欢的标准Jakarta Commons库,像Commons Logging, Commons BeantUtils等等。
quartz.properties文件
Quartz有一个叫做quartz.properties的配置文件,它答应你修改框架运行时环境。缺省是使用Quartz.jar里面的quartz.properties文件。当然,你应该创建一个quartz.properties文件的副本并且把它放入你工程的classes目录中以便类装载器找到它。quartz.properties样本文件如例1所示。
例1.quartz.properties文件答应修改Quartz运行环境:
#===============================================================
# Configure Main Scheduler Properties
#===============================================================
org.quartz.scheduler.instanceName = QuartzSchedulerorg.quartz.scheduler.instanceId = AUTO
#===============================================================
# Configure ThreadPool
#===============================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPoolorg.quartz.threadPool.threadCount = 5org.quartz.threadPool.threadPriority = 5
#===============================================================
# Configure JobStore
#===============================================================
org.quartz.jobStore.misfireThreshold = 60000org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
一旦将Quartz.jar文件和第三方库加到自己的工程里面并且quartz.properties文件在工程的classes目录中,就可以创建作业了。然而,在做这之前,我们暂且回避一下先简短讨论一下Quartz架构。
Quartz内部架构
在规模方面,Quartz跟大多数开源框架类似。大约有300个java类和接口,并被组织到12个包中。这可以和Apache Struts把大约325个类和接口以及组织到11个包中相比。尽管规模几乎不会用来作为衡量框架质量的一个特性,但这里的要害是quarts内含很多功能,这些功能和特性集是否成为、或者应该成为评判一个开源或非开源框架质量的因素。
Quartz调度器
Quartz框架的核心是调度器。调度器负责治理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依靠框架内一些非常重要的部件。Quartz不仅仅是线程和线程治理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是Quartz怎样能并发运行多个作业的原理。Quartz依靠一套松耦合的线程池治理部件来治理线程环境。本片文障中,我们会多次提到线程池治理,但Quartz里面的每个对象是可配置的或者是可定制的。所以,例如,假如你想要插进自己线程池治理设施,我猜你一定能!
分享到:
相关推荐
Java框架介绍Quartz从入门到进阶的文档介绍
1. 下载Quartz框架:从Quartz官方网站下载Quartz框架的发布版本,并解压到本地目录。 2. 配置quartz.properties文件:创建一个quartz.properties文件的副本,并将其放入工程的classes目录中,以便类装载器找到它。 3...
Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...
### Java框架介绍: Quartz从入门到进阶 #### 一、Quartz简介 Quartz是一个完全由Java编写的开源作业调度框架,适用于多种Java应用程序环境,包括但不限于J2SE、Web应用以及J2EE应用服务器。它提供了一种简单而灵活...
从Java入门到成为一名专业的架构师,这个过程中涉及的学习内容非常广泛,包括但不限于以下几个关键领域: 1. **Java基础**: 学习Java语法,如类、对象、封装、继承、多态等概念,理解控制流程(条件语句、循环)、...
"Quartz入门与提高1.ppt"可能是一个幻灯片教程,涵盖了从基础到进阶的Quartz使用。"定时任务Test.rar"可能包含了一些测试用例或示例代码,有助于理解实际应用场景。"网站地址.txt"可能提供了更多资源链接,而"quartz...
3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在...
综上所述,"Butte-Java-Note编程文档"是一个全面的Java开发者学习资源,覆盖了从基础到进阶的广泛知识领域,对于想要提升Java技能的开发者来说,是一份非常宝贵的参考资料。通过阅读这份文档,开发者可以系统地提升...
【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流...
在第10章"急速入门-企业级定时任务Quartz核心概念"中,你会了解到如何创建Job、Trigger,以及如何配置Scheduler来执行这些任务。Quartz提供了丰富的API,可以定义触发任务的时间规则,如cron表达式,以及任务间的...
《Spring Boot深度学习指南——基于"spring-boot-study-master.zip"》 ..."spring-boot-study-master.zip"提供了丰富的示例,是学习Spring Boot的宝贵资源,无论是新手入门还是进阶提升,都能从中受益匪浅。
《spring2.0技术手册》是一本旨在帮助读者掌握Spring 2.0框架的使用和理解的书籍。...通过本书的学习,读者可以获得从基础到进阶的Spring框架使用经验,为成为一个合格的Java开发者打下坚实的基础。
Spring MVC 入门 从一个最简单的 Spring Web 应用程式,来看看 Spring MVC 框架的架构与 API 组成元素。 第一个 Spring MVC 程式 WebApplicationContext Handler Mapping Handler ...
这份“springboot学习入门提升笔记”应该包含了从基础到进阶的全方面学习内容,非常适合那些想要快速上手或者希望深化SpringBoot理解的开发者。 SpringBoot的核心特性包括自动配置、嵌入式Web服务器、起步依赖和...
Spring Boot 是一个基于 Spring 框架的快速开发工具,旨在简化初始搭建以及开发过程。它集成了大量的常用第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,让你可以“零配置”地运行你的应用。Spring ...
1. **Spring Boot入门**:介绍Spring Boot的起源和核心特性,如何快速创建一个Spring Boot项目,理解起步依赖和自动配置的概念。 2. **Web开发**:深入讲解了Spring Boot对Web应用的支持,包括Thymeleaf模板引擎,...
- JFinal的插件丰富,例如Shiro安全框架插件、Swagger API文档生成插件、Quartz定时任务插件等,可以帮助开发者快速实现特定功能。 7. **实际应用场景** - JFinal适用于中小型Web项目,尤其适合个人开发者或者小...
SpringBoot新手学习手册是针对Java...总之,SpringBoot新手学习手册涵盖了从基础到进阶的各个方面,是学习和实践SpringBoot的理想资源。通过阅读和实践,开发者可以快速掌握SpringBoot的核心概念和技术,提升开发效率。
此外,本书重点突出了“实战性”的主题,力求使全书“从实际项目中来,到实际项目中去”。 目录 第1篇 概述 第1章 Spring概述 1.1 认识Spring 1.2 关于SpringSource 1.3 Spring带给我们什么 1.4 Spring体系结构 1.5 ...
此外,本书重点突出了“实战性”的主题,力求使全书“从实际项目中来,到实际项目中去”。 目录 第1篇 概述 第1章 Spring概述 1.1 认识Spring 1.2 关于SpringSource 1.3 Spring带给我们什么 1.4 Spring体系结构 1.5 ...