Quartz 与 spring 整合之数据库存储

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

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

只使用 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 应用程序开发提供集成的框架。

    946 引用 • 1460 回帖

相关帖子

欢迎来到这里!

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

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