Java 如何更改群集作业的计划?
就我所尝试的而言,我必须手动更改DB中的CRON_触发器表。肮脏的 有没有办法做得更像这样Java 如何更改群集作业的计划?,java,spring,quartz-scheduler,Java,Spring,Quartz Scheduler,就我所尝试的而言,我必须手动更改DB中的CRON_触发器表。肮脏的 有没有办法做得更像这样 有两个应用程序正在运行,它们的.properties文件调度都定义为“每分钟”,因此工作正常 我停止一个实例并重新配置(在.properties文件中更改),因此计划是“每小时” 我启动实例。现在,我想让Instance检查一下,这样的作业是否已经在DB中定义,并在DB中更新计划。现在使用站点中的配置不会发生这种情况 或者典型的解决方案是什么 所以我猜当你说.properties文件时,实际上是指Spri
SchedulerFactoryBean
中正确设置
,它将自动更新作业的日程安排<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" />
在群集模式下无法正常工作 嗨,纪尧姆,1:正确;他说:这是改变日程安排的最简单方法。用新设置重新启动两个应用程序(但不是同时启动!)听起来很容易;3:我希望它会有帮助,但我得到了“org.quartz.JobPersistenceException:新触发器与旧触发器的作业不相关。”在应用程序重新启动时。。。4:很清楚;好的,通过在SpringXML中命名JobDetailFactoryBean修复了这个问题,谢谢您的帮助,看起来它现在可以工作了!我在您的代码中没有看到任何会导致集群中cron重新配置的内容。真的有用吗?你能解释一下,为什么覆盖现有的工作不好吗?我不知道为什么。也许我应该补充一句:的确,这个解决方案也可能有帮助: