Spring + Quartz重新安排或更新触发器?

编程入门 行业动态 更新时间:2024-10-24 17:25:21
本文介绍了Spring + Quartz重新安排或更新触发器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用 Spring 3.2 和 Quartz 2.2 。

我的目标类和方法,

public class Producer { public void executeListener() { System.out.println(" Test Method . "); } }

在我的春天 applicationContext。 xml ,

<bean id="producer" class="com.service.Producer" /> <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="producer" /> <property name="targetMethod" value="executeListener" /> <property name="concurrent" value="false" /> </bean> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> <property name="jobDetail" ref="jobDetail" /> <!-- 10 seconds --> <property name="startDelay" value="10000" /> <!-- repeat every 5 seconds --> <property name="repeatInterval" value="5000" /> </bean> <bean id="mySheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <!-- <ref bean="cronTrigger" /> --> <ref bean="simpleTrigger" /> </list> </property> </bean>

以上代码正常运行, executeListener() nethod连续执行,间隔为 5秒,启动延迟为 10秒。

The above code is working and the executeListener() nethod is executing continously with the interval of 5 seconds and the starting delay will be 10 sec.

我已尝试在 spring controller 中更新触发器,

I have tried in spring controller to update the trigger as ,

@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<SimpleTrigger> tb = oldTrigger.getObject().getTriggerBuilder(); Trigger newTrigger = tb.withSchedule(simpleSchedule().withIntervalInSeconds(triggerInSec).build()); myScheduler.getObject().rescheduleJob(oldTrigger.getObject().getKey(),newTrigger ); return "success"; } }

但我收到编译时错误触发newTrigger = tb.withSchedule(simpleSchedule()。withIntervalInSeconds(triggerInSec).build()); 。

我需要:

我想重新计算执行的工作executeListener()动态 2秒区间的方法。

I want to reshedule the job to execute the executeListener() method with the 2 sec interval dynamically.

谢谢。

推荐答案

请尝试以下方法之一:

Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2)).build();

Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(2)).build();

两者在语法上都有效。看起来你的问题是触发newTrigger = tb.withSchedule(simpleSchedule()。withIntervalInSeconds(triggerInSec).build()); 是由不正确的包围引起的。即build()之后不应该有一个额外的括号,因为它返回一个触发器。

Both are syntactically valid. It looks like your issue with Trigger newTrigger = tb.withSchedule(simpleSchedule().withIntervalInSeconds(triggerInSec).build()); is caused by incorrect bracketing. ie build() should not have an extra bracket after it, as it returns a trigger.

更多推荐

Spring + Quartz重新安排或更新触发器?

本文发布于:2023-10-17 10:43:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1500670.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:触发器   Spring   Quartz

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!