美文网首页
Quartz集群模式,修改任务执行时间不用清表就会生效的配置

Quartz集群模式,修改任务执行时间不用清表就会生效的配置

作者: 也许________ | 来源:发表于2019-06-13 15:48 被阅读0次
    问题描述

    开启集群特性后,配置的任务会存储在qz数据表中,表中会存储任务的执行时间等详情信息,当要修改某个任务的执行时间时,如果该任务已保存在表中,则修改的时间并不会如期执行,还是以表中存储的执行时间为准,这时可以采用清空表数据,让任务信息重新存储,其实官方给了解决此问题的办法,就是配置可重写任务信息,具体看下文中的代码部分

    如何开启Quartz集群模式

    使用Spring集成Quartz,在配置文件配置调度器时必须需加载quartz.properties才能够开启集群

     <!-- Scheduler factory bean to glue together jobDetails and triggers to Configure Quartz Scheduler -->
        <bean id="ecpQuartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
          加载quartz.properties配置文件才能使用集群特性,否则默认为单机模式  
          <property name="configLocation" value="classpath:quartz.properties"/>
          重写任务配置信息,这样当修改任务执行时间后,不用清数据库表就会生效,程序会自动修改对应任务的执行时间
          <property name="overwriteExistingJobs" value="true" />
            <property name="triggers">
                <list>
                    <ref bean="miniTokenCronTrigger"/>
                    <ref bean="initReportDataJobTrigger"/>
                    <ref bean="clearOAuthCodeMapTrigger"/>
                    <ref bean="submitAduitRemindCronTrigger"/>
                    <ref bean="surveyRepeatRemindCronTrigger"/>
                    <ref bean="historyImageDataJobTrigger"/>
                </list>
            </property>
            <property name="applicationContextSchedulerContextKey" value="applicationContext" />
        </bean>
    
    quartz.properties配置开启集群功能
    org.quartz.jobStore.isClustered=true
    
    需注意如下配置,否则启动会报错(报错原因尚不清楚)

    durable, 指明任务就算没有绑定Trigger仍保留在Quartz的JobStore

    相关文章

      网友评论

          本文标题:Quartz集群模式,修改任务执行时间不用清表就会生效的配置

          本文链接:https://www.haomeiwen.com/subject/sfesfctx.html