gpt4 book ai didi

spring-batch - 如何通过传递 bool 标志来禁用或启用作业来控制所有按计划的 cron 作业运行的 spring 批处理作业?

转载 作者:行者123 更新时间:2023-12-02 02:39:10 25 4
gpt4 key购买 nike

我已经创建了一个工作状态表,其中我有一个 bool 标志,基于我返回的 cron expreesion(事件 cron 或 hypen(-) cron)并且我的调度程序将工作。如果您想启用或禁用所有 Spring Batch 作业, bool 标志将被更新。

我们如何控制应用程序中的标志,否则我们在运行 cron 表达式时会出现问题?

@Scheduled(cron = "#{@getCronValueDevice}")
@Scheduled(cron = "#{@getCronValueStorage}")

@Bean
public String getCronValueDevice() {
JobStatus jobStatus = jobStatusRepository.findByJobName(BatchJobConstants.DEVICE_JOB_NAME);
if (jobStatus != null && jobStatus.getIsActive()) {
return jobStatus.getActiveCronExpression();
} else {
return "-";
}

最佳答案

如果目标是使用标志启用/禁用计划的作业,我会保持简单并使作业启动代码以该标志为条件,例如:

@Scheduled(cron = "#{your.cron.expression}")
public void runJob() {
boolean enabled = ... // dynamically load the flag as needed
if (enabled) {
// run the job
}
}

这不需要动态更改 cron 表达式来启用/禁用计划。当标志为 false 时,除非再次重新激活,否则作业将不会在后续调度中执行。

顺便说一句,kubernetes 提供了与 suspend/resume 类似的功能cron 作业(这可以通过修补 cron 作业规范即时完成)。

关于spring-batch - 如何通过传递 bool 标志来禁用或启用作业来控制所有按计划的 cron 作业运行的 spring 批处理作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60850855/

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