Quartz定时任务详解一

如下是我在应用的的一个基本配置:html

Java代码   收藏代码
  1. #---------调度器属性----------------  
  2. org.quartz.scheduler.instanceName = TestScheduler  
  3. org.quartz.scheduler.instanceId = one  
  4. #---------线程配置---------------  
  5. org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool  
  6. org.quartz.threadPool.threadCount = 2  
  7. org.quartz.threadPool.threadPriority = 4  
  8. #---------做业存储设置------------  
  9. org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore  
  10. #---------插件配置-------------  
  11. org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin  
  12. org.quartz.plugin.jobInitializer.fileName = quartz_job.xml  
  13. org.quartz.plugin.jobInitializer.overWriteExistingJobs = false  
  14. org.quartz.plugin.jobInitializer.failOnFileNotFound = true  
  15. org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin  
  16. org.quartz.plugin.shutdownhook.cleanShutdown = true  

 

属性的介绍java

1.调度器属性:分别设置调度器的实例名(instanceName) 和实例 ID (instanceId)。属性 org.quartz.scheduler.instanceName 能够是你喜欢的任何字符串。默认名字通常都采用QuartzScheduler,第二个属性org.quartz.scheduler.instanceId和instaneName 属性同样,instanceId 属性也容许任何字符串。这个值必须是在全部调度器实例中是惟一的,尤为是在一个集群当中。假如你想 Quartz 帮你生成这个值的话,能够设置为 AUTO。数据库

二、线程池属性:这些线程在 Quartz 中是运行在后台担当重任的。threadCount 属性控制了多少个工做者线程被建立用来处理 Job。原则上是,要处理的 Job 越多,那么须要的工做者线程也就越多。threadCount 的数值至少为 1。Quartz 没有限定你设置工做者线程的最大值,可是在多数机器上设置该值超过100的话就会显得至关不实用了,特别是在你的 Job 执行时间较长的状况下。这项没有默认值,因此你必须为这个属性设定一个值。apache

threadPriority 属性设置工做者线程的优先级。优先级别高的线程比级别低的线程更优先获得执行。threadPriority 属性的最大值是常量 java.lang.Thread.MAX_PRIORITY,等于10。最小值为常量 java.lang.Thread.MIN_PRIORITY,为1。这个属性的正常值是 Thread.NORM_PRIORITY,为5。大多状况下,把它设置为5,这也是没指定该属性的默认值。框架

最后一个要设置的线程池属性是 org.quartz.threadPool.class。这个值是一个实现了 org.quartz.spi.ThreadPool 接口的类的全限名称。Quartz 自带的线程池实现类是 org.quartz.smpl.SimpleThreadPool,它可以知足大多数用户的需求。这个线程池实现具有简单的行为,并经很好的测试过。它在调度器的生命周期中提供固定大小的线程池。你能根据需求建立本身的线程池实现,若是你想要一个随需可伸缩的线程池时也许须要这么作。这个属性没有默认值,你必须为其指定值。测试

三、做业存储属性:做业存储部分的设置描述了在调度器实例的生命周期中,Job 和 Trigger 信息是如何被存储的。把调度器信息存储在内存中很是的快也易于配置。当调度器进程一旦被终止,全部的 Job 和 Trigger 的状态就丢失了。要使 Job 存储在内存中需经过设置 org.quartz.jobStrore.class 属性为 org.quartz.simpl.RAMJobStore,在Cron Trigger 和“做业存储和持久化”会用到的不一样类型的做业存储实现。spa

四、其余插件属性:org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin默认时,JobInitializationPlugin插件会在 classpath 中搜索名为 quartz_jobs.xml 的文件并从中加载 Job 和 Trigger 信息。其余插件后叙……插件

quartz_jobs.xml 配置和详解线程

实例:简单触发器日志

  1. Java代码   收藏代码
    1. <?xml version='1.0' encoding='utf-8'?>    
    2.     
    3. <quartz>    
    4.     
    5.   <job>    
    6.     <job-detail>    
    7.      <name>ScanDirectory</name>    
    8.      <group>DEFAULT</group>    
    9.      <description>    
    10.            A job that scans a directory for files     
    11.      </description>    
    12.      <job-class>    
    13.              org.cavaness.quartzbook.chapter3.ScanDirectoryJob     
    14.      </job-class>    
    15.      <volatility>false</volatility>    
    16.      <durability>false</durability>    
    17.      <recover>false</recover>    
    18.      <job-data-map allows-transient-data="true">    
    19.          <entry>    
    20.          <key>SCAN_DIR</key>    
    21.          <value>c:\quartz-book\input</value>    
    22.        </entry>    
    23.      </job-data-map>    
    24.     </job-detail>    
    25.     
    26.     <trigger>    
    27.      <simple>    
    28.        <name>scanTrigger</name>    
    29.        <group>DEFAULT</group>    
    30.        <job-name>ScanDirectory</job-name>    
    31.        <job-group>DEFAULT</job-group>    
    32.        <start-time>2005-06-10 6:10:00 PM</start-time>    
    33.        <!-- repeat indefinitely every 10 seconds -->    
    34.        <repeat-count>-1</repeat-count>    
    35.        <repeat-interval>10000</repeat-interval>    
    36.      </simple>    
    37.     </trigger>    
    38.     
    39.   </job>    
    40. </quartz>  
     

咱们添加了属性 org.quartz.plugin.jobInitializer.fileName 并设置该属性值为咱们想要的文件名。这个文件名要对 classloader 可见,也就是说要在 classpath 下。

第三方包

经过测试。一个简单任务只须要如下几个包:commons-beanutils.jar、commons-collections.jar、commons-logging.jar、commons-digester.jar、quartz.jar便可

名称 必须/备注 网址 activation.jar 主要是 JavaMail 要用到 http://java.sun.com/products/javabeans/glasgow/jaf.html commons-beanutils.jar 是 http://jakarta.apache.org/commons/beanutils commons-collections.jar 是 http://jakarta.apache.org/commons/collections commons-dbcp-1.1.jar 是,假如用到数据库做为做业存储 http://jakarta.apache.org/commons/dbcp commons-digester.jar 是 假如你使用了某些插件,就须要它 commons-logging.jar 是 http://jakarta.apache.org/commons/logging/ commons-pool-1.1.jar http://jakarta.apache.org/commons/pool/ javamail.jar 发送 e-mail 用 http://java.sun.com/products/javamail/ jdbc2_0-stdext.jar 是,假如用到数据库做为做业存储 http://java.sun.com/products/jdbc/ jta.jar 是,假如用到数据库做为做业存储 http://java.sun.com/products/jta/database quartz.jar 是 Quart 框架核心包 servlet.jar 假如使用了Servlet 容器,但容器中应该存在 http://java.sun.com/products/servlet/ log4j.jar 是,日志 http://logging.apache.org/

相关文章
相关标签/搜索