Spring + Quartz重新安排或更新触发器?
我使用的是Spring 3.2
和Quartz 2.2
。
我的target Class
和method
,
public class Producer { public void executeListener() { System.out.println(" Test Method . "); } }
在我的spring applicationContext.xml
,
<!-- -->
上面的代码正常工作, executeListener()
连续执行,间隔为5 seconds
,启动延迟为10 sec
。
我试过在spring controller
中更新触发器,
@Controller public class SpringController { @Autowired org.springframework.scheduling.quartz.SchedulerFactoryBean myScheduler; @Autowired org.springframework.scheduling.quartz.SimpleTriggerFactoryBean oldTrigger; @RequestMapping(value="/reSheduleTrigger.html",method=RequestMethod.POST) public @ResponseBody String reSheduleTrigger(@RequestParam(value="triggerInSec") String triggerInSec ){ System.out.println("----------------- Changing the repeat interval request -----------"); // obtain a builder that would produce the trigger TriggerBuilder tb = oldTrigger.getObject().getTriggerBuilder(); Trigger newTrigger = tb.withSchedule(simpleSchedule().withIntervalInSeconds(triggerInSec).build()); myScheduler.getObject().rescheduleJob(oldTrigger.getObject().getKey(),newTrigger ); return "success"; } }
但我收到编译时错误Trigger newTrigger = tb.withSchedule(simpleSchedule().withIntervalInSeconds(triggerInSec).build());
。
我的需要:
我想重新reshedule
作业,以动态的2 sec
间隔执行executeListener()
方法。
谢谢。
请尝试以下方法之一:
Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2)).build();
要么
Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(2)).build();
两者在语法上都是有效的。 看起来你的问题是Trigger newTrigger = tb.withSchedule(simpleSchedule().withIntervalInSeconds(triggerInSec).build());
是由不正确的包围引起的。 即build()之后不应该有一个额外的括号,因为它返回一个触发器。