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/

相關文章
相關標籤/搜索