gpt4 book ai didi

java - 如何更改 CronTrigger 中的 cron 表达式(quartz 2.2,spring 4.1)

转载 作者:搜寻专家 更新时间:2023-11-01 01:51:58 26 4
gpt4 key购买 nike

我在迁移到最新的 quartz 2.2 和 spring 4.1 时遇到了一些困难...这是一个 cron 触发器,为了清楚起见,我省略了工作和其他绒毛:

...
<bean id="timeSyncTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="timeSyncJob"/>
<property name="startDelay" value="10000"/>
<property name="cronExpression" value="0 0 1 * * ? *"/>
</bean>
...

现在,我需要在运行时更改它的cronExpression,这并不像我想的那么简单。我无法引用该 bean 并更改属性,因为它是一个提供 CronTrigger 接口(interface)的工厂,而该接口(interface)又不再具有 setCronExpression 方法,它已变得不可变。在我可以简单地从上下文中找出一个触发器并设置它的新 cron 表达式之前。它工作了很多年,直到升级变得不可避免。

那么,我们今天如何完成这个简单的任务呢?完全迷失在文档和版本中。提前致谢!

最佳答案

除了 CronTriggerFactoryBean,您可能还有一个 SchedulerFactoryBean,它提供对 Quartz 调度程序和 CronTrigger 的访问。 Quartz 调度程序允许您使用新的/修改的触发器重新安排作业:

@Autowired private SchedulerFactoryBean schedulerFactoryBean;
...
public void rescheduleCronJob() {

String newCronExpression = "..."; // the desired cron expression

Scheduler scheduler = schedulerFactoryBean.getScheduler();
TriggerKey triggerKey = new TriggerKey("timeSyncTrigger");
CronTriggerImpl trigger = (CronTriggerImpl) scheduler.getTrigger(triggerKey);
trigger.setCronExpression(newCronExpression );
scheduler.rescheduleJob(triggerKey, trigger);
}

关于java - 如何更改 CronTrigger 中的 cron 表达式(quartz 2.2,spring 4.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com