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

2019-06-13  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读