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

我在我的项目中使用 java 计划。在我的项目中调用 rest api 后,我开始在我的程序中安排。同样,我用另一个 rest api 停止了这个计划。换句话说,我在运行时安排了创建、停止、运行等。


我想将此代码从 java scheduled 转换为 spring schedule。


当我查看代码示例时,我可以按时间开始安排。或者我可以根据我在application.properties中给的参数来启动它。然而,没有一个符合我的意愿。我的要求简单如下。


if(condition) {

    startScheduled();

else {

    stopScheduled();

}

但我找不到这样的例子。你能帮帮我吗?


莫回无
浏览 103回答 2
2回答

慕姐4208626

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

胡说叔叔

然后您需要确定计划任务的执行频率。为此,您将创建一个适合您需要的 CRON 表达式。最后在任务中,只需检查您的条件并相应地执行代码。这是一些示例代码:@Componentpublic 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 执行任务。希望这可以帮助
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java