为了账号安全,请及时绑定邮箱和手机立即绑定

如何在运行时有条件地运行或启动 Spring 计划的作业?

如何在运行时有条件地运行或启动 Spring 计划的作业?

莫回无 2023-05-17 15:39:14
我在我的项目中使用 java 计划。在我的项目中调用 rest api 后,我开始在我的程序中安排。同样,我用另一个 rest api 停止了这个计划。换句话说,我在运行时安排了创建、停止、运行等。我想将此代码从 java scheduled 转换为 spring schedule。当我查看代码示例时,我可以按时间开始安排。或者我可以根据我在application.properties中给的参数来启动它。然而,没有一个符合我的意愿。我的要求简单如下。if(condition) {    startScheduled();} else {    stopScheduled();}但我找不到这样的例子。你能帮帮我吗?
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

就我而言,我习惯于@Scheduled安排一个较短的周期。CronSequenceGenerator我们正在使用该计划在运行时检查 cron 。



查看完整回答
反对 回复 2023-05-17
?
胡说叔叔

TA贡献1804条经验 获得超8个赞


然后您需要确定计划任务的执行频率。为此,您将创建一个适合您需要的 CRON 表达式。

最后在任务中,只需检查您的条件并相应地执行代码。

这是一些示例代码:

@Component

public class ScheduledTask{


  private static final Logger log = LoggerFactory.getLogger(ScheduledTask.class);


  @Autowired

  SomeService someService;


  @Scheduled(cron = "0 5 0 * * ?", zone="America/Mexico_City")

  public void doSomething() {

      log.info("Starting scheduled task");

      if(condition) {

        startScheduled();

      } else {

        stopScheduled();

      }

  }

 }

请注意 @Component 注释,此外,这个玉米表达式将在我所在时区的每天 00:05 执行任务。

希望这可以帮助


查看完整回答
反对 回复 2023-05-17
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信