gpt4 book ai didi

java - 从 quartz (Spring + Quartz 应用程序)重复作业 - 作业链

转载 作者:行者123 更新时间:2023-11-30 07:23:09 25 4
gpt4 key购买 nike

我的 quartz 工作有以下设置 -

    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="actualObject" /><br>
<property name="targetMethod" value="processData"/>
<property name="concurrent" value="false"/>
</bean>

<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail" />
<property name="startDelay" value="10000" />
<property name="repeatInterval" value="1000" />
</bean>

这对我很有用。我想做的是在它完成后立即再次调用 processData。我知道旧的 while(true) 方法最适合,但我想用 quartz 来做。

最佳答案

首先你必须解释为什么你“想用 quartz 做这个”因为“good old while(true)”是实现你的正确方法用例(当然你需要一个额外的线程,但 Quartz 也需要它)。这听起来像是过度设计,所以您最好有充分的理由。

也就是说你有两个选择:

  • 重新安排作业在您离开时立即运行。原则上:

    public class HelloJob implements Job {

    public HelloJob() {
    }

    public void execute(JobExecutionContext context) throws JobExecutionException
    {
    //do your job...

    Trigger trigger = newTrigger().build();
    JobDetail job = newJob(HelloJob.class).build();
    context.getScheduler().scheduleJob(trigger, job);
    }
    }

    您不需要 XML 配置,但必须安排此作业以某种方式首次运行(例如,在 @PostConstruct 中直接使用 Scheduler)。当您的作业完成时,它将再次运行刚刚重新安排的相同作业。

  • JobChainingJobListener可能对您有用,请参阅:Can Quartz Scheduler Run jobs serially?

与“good old while(true)”相比,这两种解决方案都非常重量级。

关于java - 从 quartz (Spring + Quartz 应用程序)重复作业 - 作业链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12195537/

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