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集群后可以保证项目在集群环境下定时任务的正常执行

  • 相关阅读:
    5.4 省选模拟赛 修改 线段树优化dp 线段树上二分
    一本通 高手训练 1782 分层图 状压dp
    luogu P3830 [SHOI2012]随机树 期望 dp
    5.2 省选模拟赛 或许 线型基
    luogu P4562 [JXOI2018]游戏 组合数学
    一本通 高手训练 1781 死亡之树 状态压缩dp
    luogu P4726 【模板】多项式指数函数 多项式 exp 牛顿迭代 泰勒展开
    4.28 省选模拟赛 负环 倍增 矩阵乘法 dp
    HDU 1756 Cupid's Arrow 计算几何 判断一个点是否在多边形内
    一本通 高手训练 1763 简单树 可持久化线段树 树链刨分 标记永久化
  • 原文地址:https://www.cnblogs.com/huangjian2/p/6802831.html
Copyright © 2011-2022 走看看