2017-05-02 5 views
0

は、私は私が石英で試してみました自動的にを手動

import org.springframework.batch.core.Job; 
    import org.springframework.batch.core.JobExecution; 
    import org.springframework.batch.core.JobParameters; 
    import org.springframework.batch.core.JobParametersBuilder; 
    import org.springframework.batch.core.launch.JobLauncher; 
    import org.springframework.beans.factory.annotation.Autowired; 
    import org.springframework.context.annotation.Import; 
    import org.springframework.scheduling.annotation.Scheduled; 
    import org.springframework.web.bind.annotation.RequestMapping; 
    import org.springframework.web.bind.annotation.RestController; 

    @RestController 
    @EnableScheduling 
    public class RunScheduler { 
     @Autowired 
     private JobLauncher jobLauncher; 

     @Autowired 
     private Job job; 

     @RequestMapping("collector/test") 
     @Scheduled(fixedRate = 5000) 
     public void run() { 

      try { 

       String dateParam = new Date().toString(); 
       JobParameters param = new JobParametersBuilder().addString("date", dateParam).toJobParameters(); 

       System.out.println(dateParam); 

       JobExecution execution = jobLauncher.run(job, param); 
       System.out.println("Exit Status : " + execution.getStatus()); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 

ない必要がある場合にのみ、スケジュールされたタスクを実行したいが、私はautowired注釈によって引き起こされる多くのエラーを取得するスケジュールされたタスクを起動する方法、 は

を行う方法
+0

エラーは何ですか?スタックトレースを提供してください。 –

+0

スケジュールタスクを手動で開始する(実行しない)ことを意味しますか?つまり、コレクタ/テストを呼び出すまで、スケジュールされたタスクは開始しません。このエンドポイントを呼び出すと、5秒ごとに実行されます。これは必須条件ですか? – pvpkiran

+0

問題は私が私のspringbootアプリを実行するときにスケジュールされたタスクが自動的に実行されるようになることです 私はコレクタ/テストを呼び出す場合にのみスケジュールされたタスクを実行したい – user3264038

答えて

-2

@Scheduledアノテーションをrunメソッドから削除します。この注釈により、メソッドは定期的に呼び出されます。

スケジューリングされたタスクを手動で実行したい場合は、クォーツスケジューラAPIまたはそのスプリングラッパーを使用して、タスクを呼び出すタイミングを完全に制御します。

+1

これは役に立ちません。現在のスケジュールを維持しながら、必要に応じて手動でタスクを呼び出す必要があります。 –