Quartz定时任务学习(三)属性文件和jar

来源:互联网 发布:win10 pe软件删除 编辑:程序博客网 时间:2024/06/04 19:33

 

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

#---------调度器属性----------------
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 下。

第三方包

通过测试。一个简单任务只需要以下几个包: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.htmlcommons-beanutils.jar是http://jakarta.apache.org/commons/beanutilscommons-collections.jar是http://jakarta.apache.org/commons/collectionscommons-dbcp-1.1.jar是,假如用到数据库作为作业存储http://jakarta.apache.org/commons/dbcpcommons-digester.jar是假如你使用了某些插件,就需要它commons-logging.jar是http://jakarta.apache.org/commons/logging/commons-pool-1.1.jarhttp://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/databasequartz.jar是Quart 框架核心包servlet.jar假如使用了Servlet 容器,但容器中应该存在http://java.sun.com/products/servlet/log4j.jar是,日志http://logging.apache.org/

原创粉丝点击