Quartz有一个叫做quartz.properties的配置文件,它允许你修改框架运行时环境。缺省是使用Quartz.jar里面的quartz.properties文件。当然你应该创建一个quartz.properties文件并且把它放入你工程的classes目录中以便类装载器找到它。

一旦将Quartz.jar文件和第三方库加到自己的工程里面并且quartz.properties文件在工程的classes目录中,就可以创建作业了。

  1. #跳过版本更新检查
  2. org.quartz.scheduler.skipUpdateCheck: true
  3.  
  4. #调度器属性配置
  5. org.quartz.scheduler.instanceName = derella-web-scheduler-dev
  6. org.quartz.scheduler.instanceId = AUTO
  7. org.quartz.scheduler.instanceIdGenerator.class = org.quartz.simpl.HostnameInstanceIdGenerator
  8.  
  9. #线程池配置
  10. org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
  11. org.quartz.threadPool.threadCount =
  12. org.quartz.threadPool.threadPriority =
  13.  
  14. # 作业存储配置
  15. # 信息保存时间 默认值60秒
  16. org.quartz.jobStore.misfireThreshold =
  17. #保存job和Trigger的状态信息到内存中,设置为
  18. org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
  19. org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
  20. org.quartz.jobStore.useProperties = false
  21. org.quartz.jobStore.dataSource = myDS
  22. #表的别名默认QRTZ_
  23. org.quartz.jobStore.tablePrefix = QRTZ_
  24. #true支持集群
  25. org.quartz.jobStore.isClustered = true
  26. org.quartz.jobStore.clusterCheckinInterval =
  27. #org.quartz.jobStore.maxMisfiresToHandleAtATime = 20
  28.  
  29. #数据源信息
  30. org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
  31. org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:/test?characterEncoding=utf-
  32. org.quartz.dataSource.myDS.user = test
  33. org.quartz.dataSource.myDS.password = test
  34. org.quartz.dataSource.myDS.maxConnections =

调度器属性

分别设置调度器的实例名(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 执行时间较长的情况下。这项没有默认值,所以你必须为这个属性设定一个值。

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 和“作业存储和持久化”会用到的不同类型的作业存储实现。

案例1中,如何使quartz.properties文件生效?

根据不同环境,加载不同配置文件到工程的classes目录即可生效

启动应用后,查看配置文件加载情况。

成功放入class目录

案例2中,如何配置quartz属性?

  1.    <!-- 配置scheduler 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
  2. <bean id="quartzScheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  3. <property name="quartzProperties">
  4. <props>
  5. <!-- 调度器属性配置 -->
  6. <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
  7. <prop key="org.quartz.scheduler.instanceIdGenerator.class">org.quartz.simpl.HostnameInstanceIdGenerator</prop>
  8. <!-- 线程池配置 -->
  9. <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
  10. <prop key="org.quartz.threadPool.threadCount">30</prop>
  11. <prop key="org.quartz.threadPool.threadPriority">5</prop>
  12. <!-- 作业存储配置 -->
  13. <prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
  14. <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
  15. </props>
  16. </property>
  17. <property name="schedulerName" value="derella-web-scheduler" />
  18.  
  19. <!-- 触发器 -->
  20. <property name="triggers">
  21. <list>
  22. <ref bean = "testJobTrigger" />
  23. </list>
  24. </property>
  25. </bean>

或者更简洁的

  1.    <!-- 配置scheduler 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
  2. <bean id="scheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  3. <property name="configLocation" value="classpath:quartz.properties"></property>
  4. <property name="schedulerName" value="derella-web-scheduler-spring" />
  5. <!-- 触发器 -->
  6. <property name="triggers">
  7. <list>
  8. <!-- <ref bean = "testJobTrigger" /> -->
  9. </list>
  10. </property>
  11. </bean>

测试配置:

  1. @Controller
  2. @RequestMapping("quartz")
  3. public class QuartzController {
  4.  
  5. @Resource
  6. private Scheduler scheduler;
  7.  
  8. @RequestMapping(value = "/testSpringQuartzScheduler.htm", method = RequestMethod.GET)
  9. @ResponseBody
  10. public String testSpringQuartzScheduler() throws SchedulerException {
  11. return scheduler.getSchedulerName();
  12. }
  13. }

请求http://localhost:12342/derella-web/quartz/testSpringQuartzScheduler.htm,返回值为derella-web-scheduler

quartz(4)--quartz.properties文件的更多相关文章

  1. 【Quartz】Spring Boot使用properties文件配置Quartz

    (1)在resource目录下新建quartz.properties文件 #============================================================== ...

  2. Quartz的Properties文件解析

    将可变信息放在properties文件是使配置更加灵活. 1.文档位置和加载顺序 1. StdSchedulerFactory默认加载quartz包下的quartz.properties文件,如果我们 ...

  3. 【Quartz】解密properties配置文件中的账号密码

    在配置quartz时,为了保密某些信息(特别是账号密码),通常会使用密文.那么在实际使用这些配置信息时,需要进行解密.本文提供一种解密方法如下: (1)假设在properties文件中加密了账号密码 ...

  4. 【Quartz】Quartz存储与持久化-基于quartz.properties的配置

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.   Quartz存储与持久化 Quartz提供两种基本作业存储类型.第一种类型叫做RAM ...

  5. Spring_跨项目读取properties文件

    应用背景:工程中有40~50个项目,分为4个模块,分别是核心模块.服务接口模块.服务实现模块.Web模块.其它模块(包括消息队列.quartz任务等).工程中很多配置项都是多个项目共有调用的,所以单独 ...

  6. spring入门(二)【加载properties文件】

    在开发过程当中需要用到配置信息,这些信息不能进行硬编码,这时配置文件是一个比较好的方式,java提供了properties格式的文件,以键值对的方式保存信息,在读取的时候通过键获得键对应的值,spri ...

  7. Quartz学习——Quartz简单入门Demo(二)

    要学习Quartz框架,首先大概了解了Quartz的基本知识后,在通过简单的例子入门,一步一个脚印的走下去. 下面介绍Quartz入门的示例,由于Quartz的存储方式分为RAM和JDBC,分别对这两 ...

  8. Quartz学习——Quartz大致介绍(一)

    1. 介绍 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,"任务进度管理器"就是 ...

  9. Quartz学习-- quartz基本介绍和 Cron表达式

    Quartz学习 一. Quartz 大致简介 Quartz 是完全由 java 开发的一个开源的任务日程管理系统 ​任务日程管理系统 换句话说就是: ​ 一个预先确定的日程时间到达时,负责执行任务的 ...

随机推荐

  1. python中的self

    1.首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的.self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数. self名称不是必须的,在python中se ...

  2. python中的 try...except...finally 的用法

    python中的 try...except...finally 的用法 author:headsen chen date:2018-04-09  16:22:11 try, except, final ...

  3. 创建TPL自定义模板

    文件布局 <!--1d7c7a527b6335cc7a623305ca940e1findex.tpl.html--> <!DOCTYPE html PUBLIC "-//W ...

  4. Scala学习之For、Function、Lazy(4)

    1.for的使用 for的使用在各种编程语言中是最常见的,这里只是聊聊for在Scala中的表现形式,由于Scala语言是完全面向对象的,所以直接导致for的不同呈现,下面举几个例子说明一下 obje ...

  5. tomcat的虚拟目录映射常用的几种方式

      我们在项目部署的时候,可以采用多种方式,接下来我们将在实际中比较常用的几种方式总结如下. 1.可以直接将我们的项目丢到tomcat的webapps目录下,这样当tomcat重启的时候,我们就可以访 ...

  6. delphi中 ExecSQL 与 open

    对于不用返回结果集的要用execsql反之则用open;insert ,update,delete就要用到execsql;select就要用open 说得对,例子:with query1 do clo ...

  7. IO流入门-第四章-FileReader

    FileReader基本用法和方法示例 /* java.io.Reader java.io.InputStreamReader 转换流(字节输入流---->字符输入流) java.io.File ...

  8. python类的相关知识第一部分

    一.类的相关概念 (1).什么是类 具有同种属性的对象称为类,是个抽象的概念.比如说:汽车.人.狗.神: (2).什么是对象或实例 日常生活中的所有东西都是对象,是类的实例化.比如说:推土车是汽车的实 ...

  9. python多线程锁lock/Rlock/BoundedSemaphore/Condition/Event

    import time import threading lock = threading.RLock() n = 10 def task(arg): # 加锁,此区域的代码同一时刻只能有一个线程执行 ...

  10. 六顶思维帽的思考,敏捷开发?——By Me

    人类的思维可以分为很多种,其中按照思维的深度和广度的侧重,可以分为纵向思维和横向思维两种: 简单的来说,“六顶思维帽”可以简单的理解为下图所示: 如何使用这种思维方式呢?举个例子:先输入一个待讨论的事 ...