Java定时框架Quartz实例详解与定时任务的Mongodb、Mysql持久化实现(二)Quartz配置文件
2016-08-12 23:18
936 查看
(1)Quartz组件
(3)Quartz持久化
Quartz核心配置文件quartz.properties常见配置详解(配置在classpath中或在web.xml中指定,示例附在最后)
一、调度器属性配置
1、instanceName属性,调度器实例名,可以设定任意字符串,QuartzSheduler也是不设定的默认值,它通常应用于Quartz集群环境,以区别不同的调度器。
2、instanceId属性,调度器实例ID,和instaneName属性一样,instanceId属性也允许任何字符串。但这个值必须是在所有调度器实例中是唯一的,尤其是在一个集群当中。假如你想 Quartz 帮你生成这个值的话,可以设置为 AUTO。如果 Quartz 框架是运行在非集群环境中,那么自动产生的值将会是
NON_CLUSTERED。假如是在集群环境下使用 Quartz,这个值将会是主机名加上当前的日期和时间。大多情况下,设置为 AUTO 即可。
二、线程池属性配置——有关线程必要的属性值,这些线程在 Quartz 中是运行在后台担当重任的
1、threadCount属性,线程数量,控制了多少个工作者线程被创建用来处理 Job。原则上是,要处理的 Job 越多,那么需要的工作者线程也就越多。threadCount 的数值至少为 1。Quartz 没有限定你设置工作者线程的最大值,但是在多数机器上设置该值超过100的话就会显得相当不实用了,特别是在你的
Job 执行时间较长的情况下。这项没有默认值,所以你必须为这个属性设定一个值。
2、threadPriority属性,线程优先级,优先级别高的线程比级别低的线程更优先得到执行。threadPriority 属性的最大值是常量 java.lang.Thread.MAX_PRIORITY,等于10。最小值为常量 java.lang.Thread.MIN_PRIORITY,为1。这个属性的正常值是
Thread.NORM_PRIORITY,为5。大多情况下,把它设置为5,这也是没指定该属性的默认值。
3、class属性,线程类属性,这个值是一个实现了 org.quartz.spi.ThreadPool 接口的类的全限名称。Quartz 自带的线程池实现类 是 org.quartz.smpl.SimpleThreadPool,它能够满足大多数用户的需求。这个线程池实现具备简单的行为,并经很好的测试过。它在调度器的生命周期中提供固定大小的线程池。你能根据需求创建自己的线程池实现,如果你想要一个随需可伸缩的线程池时也许需要这么做。这个属性没有
默认值,你必须为其指定值。
三、作业存储属性配置,这就涉及到了持久化的问题——作业存储部分的设置描述了在调度器实例的生命周期中,Job 和 Trigger 信息是如何被存储的
把调度器信息存储在内存中非常的快也易于配置。当调度器进程一旦被终止,所有的 Job 和 Trigger 的状态就丢失了。要使 Job 存储在内存中需通过设置 org.quartz.jobStrore.class 属性为 org.quartz.simpl.RAMJobStore,这也是Quartz的默认配置,就像在代码一所做的那样。假如我们不希望在 JVM 退出之后丢失调度器的状态信息的话,我们可以使用关系型数据库或非关系型数据库来存储这些信息。持久化内容会在第三篇中详述。
四、插件属性配置(这一块我没有用到,资料也不太好找,大家作为参考)
附:web.xml配置quart-properties配置
(3)Quartz持久化
Quartz核心配置文件quartz.properties常见配置详解(配置在classpath中或在web.xml中指定,示例附在最后)
一、调度器属性配置
1、instanceName属性,调度器实例名,可以设定任意字符串,QuartzSheduler也是不设定的默认值,它通常应用于Quartz集群环境,以区别不同的调度器。
2、instanceId属性,调度器实例ID,和instaneName属性一样,instanceId属性也允许任何字符串。但这个值必须是在所有调度器实例中是唯一的,尤其是在一个集群当中。假如你想 Quartz 帮你生成这个值的话,可以设置为 AUTO。如果 Quartz 框架是运行在非集群环境中,那么自动产生的值将会是
NON_CLUSTERED。假如是在集群环境下使用 Quartz,这个值将会是主机名加上当前的日期和时间。大多情况下,设置为 AUTO 即可。
</pre><pre name="code" class="html">#=============================================================== #Configure Main Scheduler Properties #=============================================================== org.quartz.scheduler.instanceName = QuartzScheduler org.quartz.scheduler.instanceId = AUTO
二、线程池属性配置——有关线程必要的属性值,这些线程在 Quartz 中是运行在后台担当重任的
1、threadCount属性,线程数量,控制了多少个工作者线程被创建用来处理 Job。原则上是,要处理的 Job 越多,那么需要的工作者线程也就越多。threadCount 的数值至少为 1。Quartz 没有限定你设置工作者线程的最大值,但是在多数机器上设置该值超过100的话就会显得相当不实用了,特别是在你的
Job 执行时间较长的情况下。这项没有默认值,所以你必须为这个属性设定一个值。
2、threadPriority属性,线程优先级,优先级别高的线程比级别低的线程更优先得到执行。threadPriority 属性的最大值是常量 java.lang.Thread.MAX_PRIORITY,等于10。最小值为常量 java.lang.Thread.MIN_PRIORITY,为1。这个属性的正常值是
Thread.NORM_PRIORITY,为5。大多情况下,把它设置为5,这也是没指定该属性的默认值。
3、class属性,线程类属性,这个值是一个实现了 org.quartz.spi.ThreadPool 接口的类的全限名称。Quartz 自带的线程池实现类 是 org.quartz.smpl.SimpleThreadPool,它能够满足大多数用户的需求。这个线程池实现具备简单的行为,并经很好的测试过。它在调度器的生命周期中提供固定大小的线程池。你能根据需求创建自己的线程池实现,如果你想要一个随需可伸缩的线程池时也许需要这么做。这个属性没有
默认值,你必须为其指定值。
#=============================================================== #Configure ThreadPool #=============================================================== org.quartz.threadPool.threadCount = 1 org.quartz.threadPool.threadPriority = 5 org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
三、作业存储属性配置,这就涉及到了持久化的问题——作业存储部分的设置描述了在调度器实例的生命周期中,Job 和 Trigger 信息是如何被存储的
把调度器信息存储在内存中非常的快也易于配置。当调度器进程一旦被终止,所有的 Job 和 Trigger 的状态就丢失了。要使 Job 存储在内存中需通过设置 org.quartz.jobStrore.class 属性为 org.quartz.simpl.RAMJobStore,这也是Quartz的默认配置,就像在代码一所做的那样。假如我们不希望在 JVM 退出之后丢失调度器的状态信息的话,我们可以使用关系型数据库或非关系型数据库来存储这些信息。持久化内容会在第三篇中详述。
#=============================================================== #Configure JobStore #=============================================================== org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore <span style="font-family: 'Microsoft YaHei'; color: inherit; line-height: 18px;"> </span>
四、插件属性配置(这一块我没有用到,资料也不太好找,大家作为参考)
#配置trigger执行历史日志 org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingTriggerHistoryPlugin org.quartz.plugin.triggHistory.triggerFiredMessage = Trigger {1}.{0} fired job {6}.{5} at: {4, date, HH:mm:ss MM/dd/yyyy} org.quartz.plugin.triggHistory.triggerCompleteMessage = Trigger {1}.{0} completed firing job {6}.{5} at {4, date, HH:mm:ss MM/dd/yyyy} with resulting trigger instruction code: {9} #配置job调度插件 #加载 Job 和 Trigger 信息的类 ( org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin #指定存放调度器(Job 和 Trigger)信息的xml文件,默认是classpath下quartz_jobs.xml org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml #org.quartz.plugin.jobInitializer.overWriteExistingJobs = false org.quartz.plugin.jobInitializer.failOnFileNotFound = true #自动扫描任务单并发现改动的时间间隔,单位为秒 org.quartz.plugin.jobInitializer.scanInterval = 10 #覆盖任务调度器中同名的jobDetail,避免只修改了CronExpression所造成的不能重新生效情况 org.quartz.plugin.jobInitializer.wrapInUserTransaction = false下面是与之配套的是quartz-jobs.xml配置,代表了一个基于CronTrigger的job:
<?xmlversion="1.0"encoding="UTF-8"?> <job-scheduling-dataxmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd" version="1.8"> <pre-processing-commands> <delete-jobs-in-group>*</delete-jobs-in-group> <span> </span><!-- clear all jobs in scheduler --> <delete-triggers-in-group>*</delete-triggers-in-group><span> </span><!-- clear all triggers in scheduler --> </pre-processing-commands> <processing-directives> <overwrite-existing-data>true</overwrite-existing-data> <ignore-duplicates>false</ignore-duplicates> </processing-directives> <schedule> <job> <name>helloQuartzJob</name> <group>DEFAULT</group> <description>简单的quartz使用</description> <job-class>HelloQuartzJob</job-class> <volatility>false</volatility> <durability>true</durability> <recover>false</recover> </job> <trigger> <span> </span> <cron> <name>trigger</name> <group>DEFAULT</group> <job-name>helloQuartzJob</job-name> <job-group>DEFAULT</job-group> <cron-expression>30/5 * * * * ?</cron-expression> </cron> </trigger> </schedule> </job-scheduling-data>
附:web.xml配置quart-properties配置
<servlet> <servlet-name>QuartzInitializer</servlet-name> <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class> <init-param> <param-name>shutdown-on-unload</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>config-file</param-name> <param-value>quartz.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
相关文章推荐
- Java定时框架Quartz实例详解与定时任务的Mongodb、Mysql持久化实现(一)Quartz组件
- Java定时框架Quartz实例详解与定时任务的Mongodb、Mysql持久化实现(三)Quartz持久化
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- Quartz实现定时任务的配置方法(纯java作业调度框架)
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- java计划任务调度框架quartz结合spring实现调度的配置实例代码
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- java中如何用Quartz框架来实现定时任务(一)
- spring框架整合使用定时任务框架java quartz的示例代码配置
- Spring+Quartz实现定时任务的配置实例
- quartz任务调度框架实现任务定时执行,不传参的配置(一)
- quartz java实现的定时任务框架
- Quartz实现JAVA定时任务的动态配置
- java 定时器,固定某个时间执行(Spring+Quartz实现定时任务的配置方法)
- Spring动态对Quartz定时任务的管理,实现动态加载,停止的配置实例代码
- Spring动态对Quartz定时任务的管理,实现动态加载,停止的配置实例代码
- spring框架整合使用定时任务框架java quartz的示例代码配置
- Spring动态对Quartz定时任务的管理,实现动态加载,停止的配置实例代码
- Linux(centos 6.5) 调用java脚本以及定时执行的脚本实例及配置文件详解
- quartz实现定时功能实例详解(servlet定时器配置方法)