以下是我在應用的的一個基本配置:
#---------調度器屬性----------------
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one
#---------線程配置---------------
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 2
org.quartz.threadPool.threadPriority = 4
#---------作業存儲設置------------
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
#---------插件配置-------------
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_job.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = false
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true
屬性的介紹
1.調度器屬性:分別設置調度器的實例名(instanceName) 和實例 ID (instanceId)。屬性 org.quartz.scheduler.instanceName 可以是你喜歡的任何字符串。默認名字一般都采用QuartzScheduler,第二個屬性org.quartz.scheduler.instanceId和instaneName 屬性一樣,instanceId 屬性也允許任何字符串。這個值必須是在所有調度器實例中是唯一的,尤其是在一個集群當中。假如你想 Quartz 幫你生成這個值的話,可以設置為 AUTO。
2、線程池屬性:這些線程在 Quartz 中是運行在后臺擔當重任的。threadCount 屬性控制了多少個工作者線程被創建用來處理 Job。原則上是,要處理的 Job 越多,那么需要的工作者線程也就越多。threadCount 的數值至少為 1。Quartz 沒有限定你設置工作者線程的最大值,但是在多數機器上設置該值超過100的話就會顯得相當不實用了,特別是在你的 Job 執行時間較長的情況下。這項沒有默認值,所以你必須為這個屬性設定一個值。
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,它能夠滿足大多數用戶的需求。這個線程池實現具備簡單的行為,并經很好的測試過。它在調度器的生命周期中提供固定大小的線程池。你能根據需求創建自己的線程池實現,如果你想要一個隨需可伸縮的線程池時也許需要這么做。這個屬性沒有默認值,你必須為其指定值。
3、作業存儲屬性:作業存儲部分的設置描述了在調度器實例的生命周期中,Job 和 Trigger 信息是如何被存儲的。把調度器信息存儲在內存中非常的快也易于配置。當調度器進程一旦被終止,所有的 Job 和 Trigger 的狀態就丟失了。要使 Job 存儲在內存中需通過設置 org.quartz.jobStrore.class 屬性為 org.quartz.simpl.RAMJobStore,在Cron Trigger 和“作業存儲和持久化”會用到的不同類型的作業存儲實現。
4、其他插件屬性:org.quartz.plugin.jobInitializer.class
=
org.quartz.plugins.xml.JobInitializationPlugin默認時,
JobInitializationPlugin插件會在 classpath 中搜索名為 quartz_jobs.xml 的文件并從中加載
Job 和 Trigger 信息。其他插件后敘……
quartz_jobs.xml 配置和詳解
實例:簡單觸發器
-
- <?xmlversion='1.0'encoding='utf-8'?>
-
-
- <quartz>
-
- <job>
- <job-detail>
- <name>ScanDirectory</name>
- <group>DEFAULT</group>
- <description>
- A job that scans a directory for files
- </description>
- <job-class>
- org.cavaness.quartzbook.chapter3.ScanDirectoryJob
- </job-class>
- <volatility>false</volatility>
- <durability>false</durability>
- <recover>false</recover>
- <job-data-mapallows-transient-data="true">
- <entry>
- <key>SCAN_DIR</key>
- <value>c:"quartz-book"input</value>
- </entry>
- </job-data-map>
- </job-detail>
-
- <trigger>
- <simple>
- <name>scanTrigger</name>
- <group>DEFAULT</group>
- <job-name>ScanDirectory</job-name>
- <job-group>DEFAULT</job-group>
- <start-time>2005-06-10 6:10:00 PM</start-time>
- <!-- repeat indefinitely every 10 seconds -->
- <repeat-count>-1</repeat-count>
- <repeat-interval>10000</repeat-interval>
- </simple>
- </trigger>
-
- </job>
- </quartz>
我們添加了屬性 org.quartz.plugin.jobInitializer.fileName 并設置該屬性值為我們想要的文件名。這個文件名要對 classloader 可見,也就是說要在 classpath 下。
第三方包