zoukankan      html  css  js  c++  java
  • Spring配置集群定时任务

    正常配置定时任务的时候配置定时任务调度工厂的代码如下

    <bean id="" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
        <property name="triggers">   
            <list>
                <ref bean="" />
                <ref bean=""/>
            </list>
        </property>
    </bean>

    当项目部署到集群的时候会出现定时任务多次执行的情况

    这时候需要用到Spring定时任务的集群功能,代码如下

    <bean id="" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
        <property name="applicationContextSchedulerContextKey" value="applicationContext" />        
        <property name="configLocation" value="classpath://quartz.properties"></property>
        <property name="overwriteExistingJobs" value="true"/>  
        <property name="triggers">   
            <list>
                <ref bean="" />
                <ref bean=""/>
            </list>
        </property>
    </bean>

    集群实例的 quartz.properties 文件示例

    #==============================================================  
    #Configure Main Scheduler Properties  
    #==============================================================   
    org.quartz.scheduler.instanceName = TestScheduler1   
    org.quartz.scheduler.instanceId = instance_one  
    #==============================================================  
    #Configure ThreadPool  
    #==============================================================   
    org.quartz.threadPool.class = org.quartz.simpl.Simple ThreadPool   
    org.quartz.threadPool.threadCount = 5   
    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.MSSQLDelegate   
    org.quartz.jobStore.tablePrefix = QRTZ_   
    org.quartz.jobStore.dataSource = myDS   
      
    org.quartz.jobStore.isClustered = true  
    org.quartz.jobStore.clusterCheckinInterval = 20000  
    #==============================================================  
    #Non-Managed Configure Datasource  
    #==============================================================   
    org.quartz.dataSource.myDS.driver = net.sourceforge.jtds.jdbc.Driver   
    org.quartz.dataSource.myDS.URL = jdbc:jtds:sqlserver://localhost:1433/quartz   
    org.quartz.dataSource.myDS.user = admin   
    org.quartz.dataSource.myDS.password = admin   
    org.quartz.dataSource.myDS.maxConnections = 10  

    也可以使用重写SchedulerFactoryBean类的方法来实现Quarz的集群

    <bean id="" class="framework.base.SchedulerFactoryBean">
        <property name="applicationContextSchedulerContextKey">
            <value>applicationContext</value>
        </property>
        <property name="triggers">
            <list>
                <ref bean="extractTrigger"/>
            </list>
        </property>
    </bean>
    package framework.scheduling;
    
    import java.io.InputStream;
    import java.io.Serializable;
    
    import org.springframework.core.io.InputStreamResource;
    import org.springframework.core.io.Resource;
    
    public class SchedulerFactoryBean extends org.springframework.scheduling.quartz.SchedulerFactoryBean implements Serializable{
    
        private static final long serialVersionUID = -1160717800136961172L;
    
        public SchedulerFactoryBean() {
            super();
            InputStream in = getClass().getClassLoader().getResourceAsStream("scheduling/quartz.properties");
            if(in!=null){
                Resource resource = new InputStreamResource(in);
                setConfigLocation(resource);
            }else{
                logger.warn("没有发现集群的quartz.properties配置文件。");
            }
            setOverwriteExistingJobs(true);
        }
    }

    配置好Quarz集群后可以保证项目在集群环境下定时任务的正常执行

  • 相关阅读:
    13---Net基础加强
    12---Net基础加强
    11---Net基础加强
    10---Net基础加强
    09---Net基础加强
    08---Net基础加强
    07---Net基础加强
    06---Net基础加强
    05---Net基础加强
    04---Net基础加强
  • 原文地址:https://www.cnblogs.com/huangjian2/p/6802831.html
Copyright © 2011-2022 走看看