我正在使用JobRunr 6.0.0(OSS)在Sping Boot 后端(2.7.4)中执行重复性作业。我使用Spring Boot启动器jobrunr-spring-boot-2-starter
,它允许我使用注解@Recurring
来调度作业。这工作得很好。我的问题是当我想要“取消调度”重复性作业时:删除(或注解)@Recurring
注解不会取消调度作业。
更具体地说,下面是我如何使用JobRunr来调度一个应该每30秒发生一次的任务的示例:
@Service
public class MyService {
@Recurring(cron = "*/30 * * * * *", id = "my-id")
public void doSomething() {
LOGGER.info("did something");
}
}
配置中没有什么特别的地方,application.properties
中与JobRunr相关的部分是这样的:
org.jobrunr.background-job-server.enabled=true
org.jobrunr.dashboard.enabled=false
org.jobrunr.background-job-server.worker-count=2
org.jobrunr.background-job-server.poll-interval-in-seconds=10
到目前为止,一切都按预期运行,作业确实每30秒执行一次,并且在JobRunr表中正确添加了一个条目,负责跟踪重复作业(jobrunr_recurring_jobs
)。
我的问题是,当我删除@Recurring
注解时,或者当我完全删除被定期调度的代码位时(因为我的后端代码必须发展,并且这个特定位不再有用,或者因为有一点重构,或者...),例如,我的代码看起来如下:
@Service
public class MyService {
// @Recurring(cron = "*/30 * * * * *", id = "my-id")
// public void doSomething() {
// LOGGER.info("did something");
// }
}
在这种情况下,以前调度的代码已消失。但与旧作业对应的条目仍存在于jobrunr_recurring_jobs
表中。这会导致日志中出现许多错误,因为JobRunr正在尝试执行一些不再存在的代码。
我可以手动删除jobrunr_recurring_jobs
表中的条目,或者使用提供的 Jmeter 板来删除(不过,我不打算在生产环境中保留 Jmeter 板),这很容易出错。
是否有办法配置JobRunr,使其“自动清除”不再计划的重复作业?
1条答案
按热度按时间whhtz7ly1#
有几种方法可以删除周期性作业:
要为您的周期性职务指定ID并删除它们,请参阅以下示例:
要删除它们: