在Spring Boot中通过休息调用启动一个新的Schedule Job

时间:2017-10-31 11:31:39

标签: spring-boot job-scheduling spring-scheduled

我正在做一个春季启动项目。这是主要方法和控制器方法

@SpringBootApplication
@ComponentScan(basePackages="nokia.quartz")
@EnableScheduling
public class App 
{
    public static void main( String[] args )
    {
        ConfigurableApplicationContext context =SpringApplication.run(App.class, args);     
    }

}

控制器:

@RestController
public class Controller {

    @Autowired
    private SampleTask m_sampletask;

    @RequestMapping(value = "start", method = RequestMethod.GET)
    public void start() throws Exception {              
        m_sampletask.work();
    }

}

一个Sample类

@Component
public class SampleTask {

    String cron_expression="0 0/1 * * * ?";

    public void work() {
        System.out.println("");
    }
}

这里的问题是,当我从休息端点“/ start”调用它时,其余的调用“/ start”应该使SampleTask work()方法成为具有给定cron表达式的调度作业。此外,我应该能够在运行时使用另一个休息端点配置它并停止它..

1 个答案:

答案 0 :(得分:0)

  1. 您可以使用@EnableScheduling注释和@Scheduled(cron= 0 0/1 * * * ?)的组合在Spring启动中创建调度程序。 请在App Class的开头添加@EnableScheduling,并使用cron将@Scheduled添加到要运行的方法。
  2. PFB是有用的链接。

    https://spring.io/guides/gs/scheduling-tasks/

    1. 您可以尝试以下选项
      @Autowired     
      TaskScheduler taskScheduler;
      ScheduledFuture<?> scheduledFuture;
      @RequestMapping(value = "start", method = RequestMethod.GET)
      public void start() throws Exception { 
        scheduledFuture = taskScheduler.scheduleAtFixedRate(m_sampletask.work(), FIXED_RATE);
       }
      
    2. Nawaz的可运行代码:

      @Component 
      public class SampleTask implements Runnable { 
          String cron_expression="0 0/1 * * * ?"; 
          @Override public void run() { System.out.println("Hello"); } 
      }