[quartz] getting start with quartz schedular

定时任务调度 (2.2.1版本)

---翻译自quartz官方文档

内容目录

  关于quartz Scheduler

          1.什么是quartz Scheduler

          2. quartz 特点

   quartz Scheduler 的安装和使用

         1.下载和安装 quartz

         2.配置quartz Scheduler

         3.一个简单的应用

 一、关于quartz Scheduler

      1.  什么是quartz Scheduler?

                quartz Scheduler 是一个可以与任何小到一个独立的java程序到大型的商业系统集成的一个开源,诸多特点的任务调度类。quartz 可以被用来创建简单或者复杂的被执行成百上千次 的任务。任务是定义在标准的java组件中,可以通过编程控制其具体的实现。quartz Scheduler包含了很多企业类的特点,比如支持JTA 事务和集群。

      2 . quartz 可以为你做什么?

          如果你的应用有任务需要适时触发,或者你的系统需要循环维护,quartz 可能就是一个比较理想的解决方案.

     用到quartz Scheduler的简单例子:

      (1)、工作流程处理:

            新订单生成,任务为准时2个小时检查一次订单的状态,如果订单确认信息没有被接收就触发显示警告信息,并修改订单的状态到'等待处理'.

      (2)、系统维护:

               指定一个在正常工作日的11:30 am将数据库中的内容移动到xml文件中的任务。

     (3).  为系统提供提醒服务。
     

    3 .quartz 特点

         (1)运行环境

                1.quartz 可以嵌入在另个一应用中

                2. quartz可以安装在应用服务器或者servlet容器中,并参与到XA 事务中。

                3.quartz 可以实例化为一个独立的带有负载均衡和容错能力的应用程序的集群。

         (2) Job scheduler
                任务被调动执行当一个触发器触发的时候。触发器可以被以下面的任意组合形式创建。
                 1.一天的任意时间(毫秒数)
                 2. 一周的某些天
                 3.一个月的某些天
                 4.不在列举的某些天(比如工作日)

                 5.明确的重复次数

                 6.一直重复至一个明确的日期

                  7. 无穷尽的重复

                  8.固定的时间间隔重复

          Job可以被他们的创建者自定义命名,也可以命名为组。为了更方便的组织到scheduler中,Trigger可以命名并放在组中。job可以一次添加到scheduler中,但是需要注册多个trigger。在一个java 企业环境中,job 可以作为分布式(XA)事务的一部分执行.

            (3) job execution(job 执行)

              1.为任何实现了job接口的java类实现任务调度提供可能。

              2.job 示例可以通过quartz实例化,或者通过你的应用程序的框架。

              3.当一个trigger触发的时候,scheduler通知一个或者多个实现jobListener和TriggerListener的java对象(监听器 可以是一个简单的java对象,EJB组件,JMS 发布器)。监听器在job执行后可以接收到通知消息。

           (4) job persistence(job 持久化)

                1.quartz 设计了一个JobStore接口供实现来为为job存储提供多种机制。

                2.quartz也包含 JDBCJobStore,所有的jobs和triggers可以配置“no-volatile”通过jdbc存储在关系型数据库中。

                3. quartz也包含 RAMJobStore,所有的jobs和triggers存储在RAM中,因此不需要在程序运行期间持久化就有不需要要额外的数据库的优点。

         (5)transactions(事务)

              1.quartz通过使用JobStoreCMT(JobStore的一个子类)可以参与到JTA事务中。

              2.quartz可以管理在执行的Job中的JTA事务(开始、提交),Job执行的工作在JTA事务自动执行。

           (6)clustering features(集群特点)

                  1.容错能力

                  2.负载均衡

                  3.quartz的集群特点是通过JDBCJobStore建立在数据库持久化基础之上。

                  4. Terracotta 扩展了quartz的集群能力并且不需要后端数据库的支持。

         (7)Listeners&Plug-lns (监听器和插件)

                   1. 应用程序通过是通过实现一个或者多个listener接口可以捕获scheduling 事件去者控制job/trigger的行为。

                   2.可以使用插件机制功能添加到quartz,比如保持历史的工作执行,或者从文件加载作业和触发器定义。

                   3.quartz加载了大量的插件和listener的工厂类。

 

                 

              

   

          

   

 

           

  

 

 

posted @ 2015-01-22 20:11  snow__wolf  阅读(210)  评论(0)    收藏  举报