图:表示了每个节点直接与数据库通信,若离开数据库将对其他节点一无所知
在数据库中建表。建表模版在Quartz包下docs/dbTables下,选择相应的数据库和版本即可。DB2_V8的11个Table列表如下:
QRTZ_JOB_LISTENERS
QRTZ_TRIGGER_LISTENERS
QRTZ_FIRED_TRIGGERS
QRTZ_PAUSED_TRIGGER_GRPS
QRTZ_SCHEDULER_STATE
QRTZ_LOCKS
QRTZ_SIMPLE_TRIGGERS
QRTZ_CRON_TRIGGERS
QRTZ_TRIGGERS
QRTZ_JOB_DETAILS
QRTZ_CALENDARS
QRTZ_BLOB_TRIGGERS
2、 配置数据库连接池,如果spring已经配置则不需要再另行配置,只需在后面配置的applicationContext-quartz.xml引入即可。
applicationContext.xml:
1
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">34classpath:dataConfig.properties567 destroy-method="close">910${ds34.driver}111213${ds34.url}141516${ds34.username}171819${ds34.password}202122232425
dataConfig.properties:
ds34.driver=com.ibm.db2.jcc.DB2Driver
ds34.url=jdbc:db2://192.168.*.*:50000/XXXXds34.username=admin
ds34.password=*******
3、 配置quartz.properties
org.quartz.scheduler.instanceName属性可为任何值,用在 JDBC JobStore 中来唯一标识实例,但是所有集群节点中必须相同。
org.quartz.scheduler.instanceId 属性为 AUTO即可,基于主机名和时间戳来产生实例 ID。
org.quartz.jobStore.class属性为 JobStoreTX,将任务持久化到数据中。因为集群中节点依赖于数据库来传播 Scheduler 实例的状态,你只能在使用 JDBC JobStore 时应用 Quartz 集群。这意味着你必须使用 JobStoreTX 或是 JobStoreCMT 作为 Job 存储;你不能在集群中使用 RAMJobStore。
org.quartz.jobStore.isClustered 属性为 true,你就告诉了 Scheduler 实例要它参与到一个集群当中。这一属性会贯穿于调度框架的始终,用于修改集群环境中操作的默认行为。
org.quartz.jobStore.clusterCheckinInterval 属性定义了Scheduler 实例检入到数据库中的频率(单位:毫秒)。Scheduler 检查是否其他的实例到了它们应当检入的时候未检入;这能指出一个失败的 Scheduler 实例,且当前 Scheduler 会以此来接管任何执行失败并可恢复的 Job。通过检入操作,Scheduler 也会更新自身的状态记录。clusterChedkinInterval 越小,Scheduler 节点检查失败的 Scheduler 实例就越频繁。默认值是 15000 (即15 秒)。
quartz.properties:
1
##Quartz 调度任务所需的配置文件23##org.quartz.scheduler.instanceName属性可为任何值,用在 JDBC JobStore 中来唯一标识实例,但是所有集群节点中必须相同。4org.quartz.scheduler.instanceName=HumsScheduler5##org.quartz.scheduler.instanceId 属性为 AUTO即可,基于主机名和时间戳来产生实例 ID。6org.quartz.scheduler.instanceId=AUTO78orgorg.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool9org.quartz.threadPool.threadCount= 1010org.quartz.threadPool.threadPriority= 511org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true1213org.quartz.jobStore.misfireThreshold= 6000014 ##org.quartz.jobStore.class属性为 JobStoreTX,将任务持久化到数据中。15 ##因为集群中节点依赖于数据库来传播 Scheduler 实例的状态,你只能在使用 JDBC JobStore 时应用 Quartz 集群。16 ##这意味着你必须使用 JobStoreTX 或是 JobStoreCMT 作为 Job 存储;你不能在集群中使用 RAMJobStore。17orgorg.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX18orgorg.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate19org.quartz.jobStore.tablePrefix=QRTZ_20org.quartz.jobStore.maxMisfiresToHandleAtATime=1021##org.quartz.jobStore.isClustered 属性为 true,你就告诉了 Scheduler 实例要它参与到一个集群当中。22##这一属性会贯穿于调度框架的始终,用于修改集群环境中操作的默认行为。23org.quartz.jobStore.isClustered=true24##org.quartz.jobStore.clusterCheckinInterval 属性定义了Scheduler 实例检入到数据库中的频率(单位:毫秒)。25##Scheduler 检查是否其他的实例到了它们应当检入的时候未检入;这能指出一个失败的 Scheduler 实例,且当前 Scheduler 会以此来接管任何执行失败并可恢复的 Job。26##通过检入操作,Scheduler 也会更新自身的状态记录。clusterChedkinInterval 越小,Scheduler 节点检查失败的 Scheduler 实例就越频繁。默认值是15000(即15 秒)。27org.quartz.jobStore.clusterCheckinInterval= 20000
4、配置applicationContext-quartz.xml
1
<?xml version="1.0" encoding="UTF-8"?>23beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">456789101112131415161718192021继承QuartzJobBean的类的引用,如果不继承QuartzJobBean可以参考 http://www.javaeye.com/topic/4860552223242526272829