zoukankan      html  css  js  c++  java
  • quartz(4)--quartz.properties文件

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

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

    #跳过版本更新检查
    org.quartz.scheduler.skipUpdateCheck: true
    
    #调度器属性配置 
    org.quartz.scheduler.instanceName = derella-web-scheduler-dev
    org.quartz.scheduler.instanceId = AUTO
    org.quartz.scheduler.instanceIdGenerator.class = org.quartz.simpl.HostnameInstanceIdGenerator
    
    #线程池配置
    org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount = 30
    org.quartz.threadPool.threadPriority = 5
    
    # 作业存储配置  
    # 信息保存时间 默认值60秒  
    org.quartz.jobStore.misfireThreshold = 60000
    #保存job和Trigger的状态信息到内存中,设置为     
    org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
    org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
    org.quartz.jobStore.useProperties = false
    org.quartz.jobStore.dataSource = myDS
    #表的别名默认QRTZ_
    org.quartz.jobStore.tablePrefix = QRTZ_
    #true支持集群
    org.quartz.jobStore.isClustered = true
    org.quartz.jobStore.clusterCheckinInterval = 20000
    #org.quartz.jobStore.maxMisfiresToHandleAtATime = 20
    
    #数据源信息
    org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
    org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
    org.quartz.dataSource.myDS.user = test
    org.quartz.dataSource.myDS.password = test
    org.quartz.dataSource.myDS.maxConnections = 5

    调度器属性

    分别设置调度器的实例名(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属性?

       <!-- 配置scheduler 如果将lazy-init='false'那么容器启动就会执行调度程序  --> 
         <bean id="quartzScheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
             <property name="quartzProperties">
                <props>
                    <!-- 调度器属性配置  -->
                    <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
                    <prop key="org.quartz.scheduler.instanceIdGenerator.class">org.quartz.simpl.HostnameInstanceIdGenerator</prop>
                    <!-- 线程池配置 -->
                    <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
                    <prop key="org.quartz.threadPool.threadCount">30</prop>
                    <prop key="org.quartz.threadPool.threadPriority">5</prop>
                    <!-- 作业存储配置   -->
                    <prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
                    <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
                </props>
            </property>
            <property name="schedulerName" value="derella-web-scheduler" />
            
            <!-- 触发器 --> 
            <property name="triggers"> 
                 <list> 
                    <ref bean = "testJobTrigger" />
                 </list> 
            </property> 
         </bean>

    或者更简洁的

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

    测试配置:

    @Controller
    @RequestMapping("quartz")
    public class QuartzController {
    
        @Resource
        private Scheduler scheduler;
    
        @RequestMapping(value = "/testSpringQuartzScheduler.htm", method = RequestMethod.GET)
        @ResponseBody
        public String testSpringQuartzScheduler() throws SchedulerException {
            return scheduler.getSchedulerName();
        }
    }

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

     

  • 相关阅读:
    Animate.css 一款强大的预设css3动画库
    关于js返回上一页的实现方法
    jquery判断字符串中是否包含特定字符的方法总结
    去掉select在苹果手机上的原生样式
    html5中如何去掉input type date默认样式
    JS和jQuery中ul li遍历获取对应的下角标
    滚动一定的高度底色递增
    喵哈哈村的狼人杀大战(5)
    喵哈哈村的狼人杀大战(2)
    One Card Poker
  • 原文地址:https://www.cnblogs.com/qin-derella/p/6526242.html
Copyright © 2011-2022 走看看