最佳实践:利用Quartz实现任务调度的集群
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建测试job
public class TestJobBus1 implements IJob{
private static Log log=LogFactory.getLog(TestJobBus1.class);
/**
*TEST
*/
public void executeInternal(){
try {
System.out.println("-------------TestJobBus1
start-------------"+ InetAddress.getLocalHost());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.4.配置Quartz 使用集群
3.4.1.配置节点的quartz.properties 文件
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.instanceId = AUTO
#org.quartz.scheduler.rmi.export = false
#org.quartz.scheduler.rmi.proxy = false
#org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
#==================================================================== ========
# Configure ThreadPool
#==================================================================== ========
#org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
#org.quartz.threadPool.threadCount = 10
#org.quartz.threadPool.threadPriority = 5
#org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializing Thread = true
#==================================================================== ========
# Configure JobStore
#==================================================================== ========
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.driverDelegateClass =
org.quartz.impl.jdbcjobstore.StdJDBCDelegate
#org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.misfireThreshold = 60000
eProperties = false
org.quartz.jobStore.tablePrefix = QRTZ_
#org.quartz.jobStore.dataSource = myDS
value="applicationContext" /> class="org.springframework.scheduling.quartz.CronTriggerBean"> class="com.grgbanking.view.scheduling.MethodInvokingJobDetailFactoryB ean"> value="executeInternal"> class="com.grgbanking.view.scheduling.TestJobBus1"> dataSource:项目中用到的数据源,里面包含了quartz用到的12张数据库表; applicationContextSchedulerContextKey:是org.springframework.scheduling.quartz.SchedulerFactoryBean这个类中把spring上下文以key/value的方式存放在了quartz的上下文中了,可以用applicationContextSchedulerContextKey所定义的key得到对应的spring上下文; configLocation:用于指明quartz的配置文件的位置 关于Job配置,这里有两点需要注意MethodInvokingJobDetailFactoryBean 在这里使用网上牛人修改后的frameworkx.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean (此案例我改包名为:com.grgbanking.view.scheduling),此类在网上可以下载,直接使用org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean 会报java.io.NotSerializableException异常。 shouldRecover