Spring以不同的时间间隔安排不同任务

时间:2017-06-22 19:51:44

标签: java spring-boot spring-scheduled

我正在使用Spring启动来为前端构建所有后端REST API和reactJS。我的Web应用程序允许我们在UI上运行不同的任务。这基本上意味着,REST API是通过正在执行的特定任务的参数触发的。当我们通过UI执行它时,一切都很好,但如果我想为其中一些任务添加一个计划功能,那么我对如何继续它很困惑。

我在spring boot中看到了一些例子,但是它们具有对象的void返回类型的条件。而我的对象在某些情况下返回String或long。什么是安排像这些需要在不同时间为不同参数运行API的工作的最佳方法?

用例:

  • 我的应用程序中有不同的任务
  • 每个任务都有不同的参数来触发API
  • 每个任务可以有不同的计划时间。

如何使用上述用例并使用spring boot app构建调度程序?

我见过的例子是:

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

 @SpringBootApplication
 @EnableScheduling
 public class Application {
public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class);
  }
}
 /***************************************************************/
 package hello;

 import java.text.SimpleDateFormat;
 import java.util.Date;

 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;

 @Component
 public class ScheduledTasks {

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

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
    log.info("The time is now {}", dateFormat.format(new Date()));
}
  }

1 个答案:

答案 0 :(得分:0)

您描述了适合批处理框架的问题。 Spring Batch是Spring Platform的顶级框架。