Java定时框架Quartz实例详解与定时任务的Mongodb、Mysql持久化实现(二)Quartz配置文件

释放双眼,带上耳机,听听看~!

**(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 即可。  


1
2
3
4
5
6
1</pre><pre name="code" class="html">#===============================================================      
2#Configure Main Scheduler Properties      
3#===============================================================        
4org.quartz.scheduler.instanceName = QuartzScheduler        
5org.quartz.scheduler.instanceId = AUTO    
6

二、线程池属性配置
——有关线程必要的属性值,这些线程在 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,它能够满足大多数用户的需求。这个线程池实现具备简单的行为,并经很好的测试过。它在调度器的生命周期中提供固定大小的线程池。你能根据需求创建自己的线程池实现,如果你想要一个随需可伸缩的线程池时也许需要这么做。这个属性没有 默认值,你必须为其指定值。  


1
2
3
4
5
6
7
1#===============================================================      
2#Configure ThreadPool      
3#===============================================================        
4org.quartz.threadPool.threadCount =  1        
5org.quartz.threadPool.threadPriority = 5        
6org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool      
7

三、作业存储属性配置,这就涉及到了持久化的问题——作业存储部分的设置描述了在调度器实例的生命周期中,Job 和 Trigger 信息是如何被存储的

把调度器信息存储在内存中非常的快也易于配置。当调度器进程一旦被终止,所有的 Job 和 Trigger 的状态就丢失了。要使 Job 存储在内存中需通过设置  org.quartz.jobStrore.
class
 属性为 org.quartz.simpl.RAMJobStore,这也是Quartz的默认配置,就像在代码一
所做的那样。假如我们不希望在 JVM 退出之后丢失调度器的状态信息的话,我们可以使用关系型数据库或非关系型数据库来存储这些信息。持久化内容会在第三篇中详述


1
2
3
4
5
1#===============================================================    
2#Configure JobStore    
3#===============================================================      
4org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore   <span style="font-family: 'Microsoft YaHei'; color: inherit; line-height: 18px;">  </span>
5

四、插件属性配置(这一块我没有用到,资料也不太好找,大家作为参考)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1#配置trigger执行历史日志
2org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingTriggerHistoryPlugin    
3org.quartz.plugin.triggHistory.triggerFiredMessage = Trigger {1}.{0} fired job {6}.{5} at: {4, date, HH:mm:ss MM/dd/yyyy}    
4org.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}    
5#配置job调度插件  
6#加载 Job 和 Trigger 信息的类   (
7org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin  
8#指定存放调度器(Job 和 Trigger)信息的xml文件,默认是classpath下quartz_jobs.xml  
9org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml    
10#org.quartz.plugin.jobInitializer.overWriteExistingJobs = false    
11org.quartz.plugin.jobInitializer.failOnFileNotFound = true    
12#自动扫描任务单并发现改动的时间间隔,单位为秒  
13org.quartz.plugin.jobInitializer.scanInterval = 10  
14#覆盖任务调度器中同名的jobDetail,避免只修改了CronExpression所造成的不能重新生效情况  
15org.quartz.plugin.jobInitializer.wrapInUserTransaction = false
16

1
2
1**下面是与之配套的是quartz-jobs.xml配置,代表了一个基于CronTrigger的job:**
2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
1<?xmlversion="1.0"encoding="UTF-8"?>  
2<job-scheduling-dataxmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
3   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4   xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
5   version="1.8">  
6      
7   <pre-processing-commands>  
8       <delete-jobs-in-group>*</delete-jobs-in-group> <span>     </span><!-- clear all jobs in scheduler -->  
9       <delete-triggers-in-group>*</delete-triggers-in-group><span>  </span><!-- clear all triggers in scheduler -->  
10   </pre-processing-commands>  
11      
12   <processing-directives>  
13       <overwrite-existing-data>true</overwrite-existing-data>  
14       <ignore-duplicates>false</ignore-duplicates>  
15   </processing-directives>  
16      
17   <schedule>  
18       <job>  
19           <name>helloQuartzJob</name>  
20           <group>DEFAULT</group>  
21           <description>简单的quartz使用</description>  
22           <job-class>HelloQuartzJob</job-class>  
23           <volatility>false</volatility>  
24           <durability>true</durability>  
25           <recover>false</recover>  
26       </job>  
27       <trigger>  
28       <span>   </span>  <cron>
29              <name>trigger</name>    
30              <group>DEFAULT</group>    
31              <job-name>helloQuartzJob</job-name>    
32              <job-group>DEFAULT</job-group>
33              <cron-expression>30/5 * * * * ?</cron-expression>
34    </cron>  
35       </trigger>
36   </schedule>      
37</job-scheduling-data>
38

附:web.xml配置quart-properties配置


1
2
3
4
5
6
7
8
9
10
11
12
13
14
1<servlet>
2   <servlet-name>QuartzInitializer</servlet-name>
3   <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
4   <init-param>
5       <param-name>shutdown-on-unload</param-name>
6       <param-value>true</param-value>
7   </init-param>
8   <init-param>
9       <param-name>config-file</param-name>
10      <param-value>quartz.properties</param-value>
11  </init-param>
12  <load-on-startup>1</load-on-startup>
13</servlet>
14

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索