Dim*_*ima 4 java cron spring quartz-scheduler
我有点陷入迁移到最新的石英2.2和弹簧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>
...
Run Code Online (Sandbox Code Playgroud)
现在,我需要在运行时更改其cronExpression,并不像我想象的那么简单.我不能引用bean并更改属性,因为它的工厂提供了CronTrigger接口,而接口又不再具有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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11019 次 |
| 最近记录: |