spring4.0.5 + quartz1.8.6/2.2.1集群搭建

spring 4 + quartz 简单定时任务以及集群搭建配置

1,简单定时任务
applicationContext-quartz.xml配置如下:



	

	
		
		
	

	  
          
              
          
          
            0/1 * * * * ?  
          
      

	
		
			
				
			
		
	



ps:TestJob为普通的java类,test为要执行的方法

2. 集群配置 quartz1.8.x
applicationContext-quartz.xml



	
		
			   
	              
	              
	              
        	   
		 
		
	

	
		
		
			
				
			
		
	



ps:使用MethodInvokingJobDetailFactoryBean会报不能序列化错误,这是一个spring bug
从https://jira.spring.io/browse/SPR-3797下载附件,使用修改过的MethodInvokingJobDetailFactoryBean
或者使用BeanInvokingJobDetailFactoryBean(配置如上)

quartz.properties配置如下:

#============================================================================
# Configure Main Scheduler Properties  
#============================================================================

org.quartz.scheduler.instanceName = MyClusteredScheduler
org.quartz.scheduler.instanceId = AUTO

#============================================================================
# Configure ThreadPool  
#============================================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 5

#============================================================================
# Configure JobStore  
#============================================================================

org.quartz.jobStore.misfireThreshold = 60000

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_

org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000

#============================================================================
# Configure Datasources  
#============================================================================

org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@xxxxx:xx
org.quartz.dataSource.myDS.user = xx
org.quartz.dataSource.myDS.password = xx
org.quartz.dataSource.myDS.maxConnections = 5
org.quartz.dataSource.myDS.validationQuery=select 0 from dual

3. 集群配置 quartz2.2.x
applicationContext-quartz.xml配置如下



	
		
		
	

	
		
		
	

	
		
		
		
		
			
				
			
		
	



ClusterJob类:
package com.qf.job;

import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean;

/**
 * @author LimingWang
 * @date 2015年6月16日 下午6:16:19
 * @version 1.0
 */
@DisallowConcurrentExecution
public class ClusterJob extends QuartzJobBean{

	private Logger logger = LoggerFactory.getLogger(ClusterJob.class);
	
	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		for (int i = 0; i < 2; i++) {
			logger.info("cluster job test=============================");
		}
	}
}

quartz.properties配置如下:
#============================================================================
# Configure Main Scheduler Properties  
#============================================================================

org.quartz.scheduler.instanceName = MyClusteredScheduler
org.quartz.scheduler.instanceId = AUTO

#============================================================================
# Configure ThreadPool  
#============================================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 5

#============================================================================
# Configure JobStore  
#============================================================================

org.quartz.jobStore.misfireThreshold = 60000

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_

org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000

#============================================================================
# Configure Datasources  
#============================================================================
# Manage by Spring
#org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
#org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@xxxxx:xx
#org.quartz.dataSource.myDS.user = xx
#org.quartz.dataSource.myDS.password = xx
#org.quartz.dataSource.myDS.maxConnections = 5
#org.quartz.dataSource.myDS.validationQuery=select 0 from dual

ps:quartz下载地址http://www.quartz-scheduler.org/downloads/
	文档地址http://quartz-scheduler.org/documentation#current-product-documentation

spring4.0.5 + quartz1.8.6/2.2.1集群搭建_第1张图片 spring4.0.5 + quartz1.8.6/2.2.1集群搭建_第2张图片

你可能感兴趣的:(quartz)