如何更改聚类石英作业的时间表?

时间:2014-06-30 07:15:12

标签: java spring quartz-scheduler

据我所知,我必须手动更改DB中的CRON_TRIGGERS表。脏...

有什么方法可以更像这样吗?:

  1. 有2个应用正在运行,两个都在.properties文件时间表中定义为“每分钟”,因此可以正常工作
  2. 我停止一个实例并重新配置(更改.properties文件),因此时间表是“每小时”
  3. 我启动了这个实例。现在我希望检查这个工作,这个工作已经在DB中定义并在那里更新计划。现在使用来自网站http://www.objectpartners.com/2013/07/09/configuring-quartz-2-with-spring-in-clustered-mode/
  4. 的配置不会发生这种情况

    或者什么是典型的解决方案?

2 个答案:

答案 0 :(得分:1)

  1. 所以我想当你说.properties文件时,你实际上是指spring bean XML文件。
  2. 使用不同的计划静态配置相同的作业没有任何意义。如果由于某种原因,一个实例重新启动,它将自动应用自己的计划。如果静态配置,则所有实例上的作业触发器应该相同
  3. 如果您在<property name="overwriteExistingJobs" value="true"/>中正确设置SchedulerFactoryBean,则应自动更新作业时间表。
  4. 您绝不应手动修改数据库。始终通过其API更新调度程序。

答案 1 :(得分:0)

试试这样:

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="jobDetails">
            <list>
                <ref bean="yourJobDetail" />
            </list>
        </property>
        <property name="triggers">
            <list>
                <ref bean="yourJobTrigger" />
            </list>
        </property>
        <property name="configLocation" value="file:${HOME}/yourProperties.properties" />
        <!-- Commented, because don't work with autocommit = false on spring data source -->
        <!-- <property name="dataSource" ref="mainDataSource"/> -->
        <property name="transactionManager" ref="mainTransactionManager" />
        <property name="autoStartup" value="true" />
        <property name="applicationContextSchedulerContextKey" value="applicationContext" />
        <property name="jobFactory">
            <bean class="FactoryForJobWithInjectionOfSpringBbean" />
        </property>
        <!-- Will update database cron triggers to what is in this jobs file on each deploy. Replaces all previous trigger and job data that 
            was in the database. YMMV -->
        <!-- dont work properly with cluster -->
        <!-- <property name="overwriteExistingJobs" value="true" /> -->
    </bean>

不幸的是我认为:

<property name="overwriteExistingJobs" value="true" />

在群集模式下无法正常工作。