Quartz 与 spring 整合之数据库存储

本贴最后更新于 2589 天前,其中的信息可能已经水流花落

更多详细内容请参考官网文档

只使用 quartz.properties

#①集群的配置,这里不使用集群
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
## 任务超时时间,默认为60s
org.quartz.jobStore.misfireThreshold=60000
## 一次性最多执行多少个超时任务
org.quartz.jobStore.maxMisfiresToHandleAtATime=20
# Cluster集群
org.quartz.jobStore.isClustered = false
#ID设置为自动获取 每一个必须不同
org.quartz.scheduler.instanceId = AUTO
#②配置调度器的线程池
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
## 并行执行最大线程数
#org.quartz.threadPool.threadCount=5
##线程优先级
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
#③配置任务调度现场数据保存机制
## org.quartz.simpl.RAMJobStore为使用内存机制,将job和trigger信息保存到内存中,缺点,jvm停止后,内存信息丢失
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
## org.quartz.impl.jdbcjobstore.JobStoreTX完全符合JDBC的驱动程序 ,org.quartz.impl.jdbcjobstore.oracle.OracleDelegate,这里使用数据库驱动方式,将trigger和job信息保存到数据库中
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
#quartz数据库表名前缀,默认值为QRTZ_
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate

## dataSource
##库的别名
org.quartz.jobStore.dataSource = myDS
org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@localhost:1521:orcl
org.quartz.dataSource.myDS.user = SCOTT
org.quartz.dataSource.myDS.password = mingliang
org.quartz.dataSource.myDS.validationQuery= select 1 from dual
org.quartz.dataSource.myDS.maxConnections = 20

org.quartz.jobListener.NAME.class=com.dtsz.scheduletask.quartz.job.CountJobListener
org.quartz.triggerListener.NAME.class=com.dtsz.scheduletask.quartz.job.CountJobListener

与 Spring 整合

可以将所有配置都配置到 spring 的配置文件中,仅使用 spring 的配置文件,但也可以使用部分 spring 配置和部分 quartz.properties 中的配置,如果两个配置文件中均有相应配置,则优先使用 spring 中的配置信息

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.dtsz.scheduletask.quartz"/>

    <bean id="customJobFactory" class="com.dtsz.scheduletask.quartz.job.CustomJobFactory"/>
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="jobFactory" ref="customJobFactory"/>
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
        <!--<property name="configLocation" value="classpath:quartz.properties"/>-->
        <property name="quartzProperties">
            <props>

                <prop key="org.quartz.scheduler.instanceName">quartzScheduler</prop>
                <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
                <prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
                <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
                <prop key="org.quartz.threadPool.threadCount">15</prop>
                <prop key="org.quartz.threadPool.threadPriority">5</prop>
                <prop key="org.quartz.jobStore.misfireThreshold">600000</prop>
                <prop key="org.quartz.jobStore.maxMisfiresToHandleAtATime">20</prop>
                <!--注意:如果数据源采用spring管理,则一定要注释掉下面的jobstore的配置-->
                <!--<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>-->
                <!--<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.oracle.OracleDelegate</prop>-->
                <!--userProperties设置为true时,trigger或者job中的dataMap的类型必需为String类型,false可以设置为自定义类型,但是有时候会出现异常,目前异常未能复现-->
                <prop key="org.quartz.jobStore.useProperties">false</prop>
                <!-- 指定job覆盖,如果这个覆盖配置为false,quratz启动以后将以数据库的数据为准,配置文件的修改不起作用 -->
                <prop key="overwriteExistingJobs">true</prop>

                <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
                <prop key="org.quartz.jobListener.NAME.class">com.dtsz.scheduletask.quartz.job.CountJobListener</prop>
                <prop key="org.quartz.triggerListener.NAME.class">com.dtsz.scheduletask.quartz.job.CountJobListener</prop>

            </props>
        </property>

    </bean>


</beans>
  • Quartz
    19 引用 • 16 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    943 引用 • 1460 回帖 • 3 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...