我在Spring Framework应用程序中有多个QuartzJobBean。这些工作根据他们的需要安排。我遇到如下问题。
每5秒开一次作业。
让我们说吧;
1st execution at 00.00.05
2nd execution at 00.00.10
3rd execution at 00.00.15
.
.
.
etc.
但是,如果第一次执行持续6秒,则在第一次执行完成后立即执行第二次。如果有可能,我想安排我的工作如下?
1st execution at 00.00.05 (execution time 6 seconds)
2nd execution at 00.00.16 (execution time 3 seconds)
3rd execution at 00.00.24 (execution time x seconds)
4th execution at 00.00.24+5+x
.
.
.
etc.
提前致谢。
答案 0 :(得分:2)
我最终扩展了QuartzJobBean并实现了StatefulJob。作为触发器,我使用了SimpleTriggerBean和repeatInterval属性xxxx毫秒。
MyJob类
public class MyJob extends QuartzJobBean implements StatefulJob
springcontext
<bean id="myJobTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="myJob"/>
<property name="startDelay" value="0" />
<property name="repeatInterval" value="2000" />
</bean>
答案 1 :(得分:0)
答案 2 :(得分:0)
实际上,如果您已经使用过Spring,那么根本不需要Quartz。引用25.5.1 The @Scheduled Annotation:
25.5.1 @Scheduled Annotation
可以将
@Scheduled
注释与触发器元数据一起添加到方法中。例如,以固定延迟每5秒调用以下方法,这意味着将从每个前一次调用的完成时间开始测量周期。@Scheduled(fixedDelay=5000) public void doSomething() { // something that should execute periodically }
文档中的示例似乎涵盖完全您想要的内容。