2014年5月15日木曜日

Spring Batch Adminにスケジュール機能をつけてみる

前回、Spring Batch Adminについて触れましたが、
Springには 3.0からTaskSchedulerという機能がついているのでそれを使って
Spring Batch Adminにスケジュールをホストさせてみます。


あくまで、Spring Batch Adminの使っているtaskLauncherを
TaskSchedulerから使うというものでAdminからスケジュールを編集できるとかではありません。
あしからず。


RunScheduler.java :

@Component
public class RunScheduler {

   
    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private ListableJobLocator jobLocator;

    private String jobName;
   
    public void setJobName(String jobName) {
        this.jobName = jobName;
    }

    public void run() {

        try {

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

            System.out.println(dateParam);

            Job job = jobLocator.getJob(jobName);

            JobExecution execution = jobLauncher.run(job, param);

        } catch (Exception e) {


 e.printStackTrace();
        }

    }
}




bean定義に次のようにスケジュールを定義します。
下の例では、テンプレートにあるsimpleJobを5分毎に実行します。

  <bean id="runScheduler" class="my.package.RunScheduler">
      <property name="jobName" value="simpleJob"/>
  </bean>
 
  <!-- Run every 5 minutes     -->
  <task:scheduled-tasks>
    <task:scheduled ref="runScheduler" method="run" cron="0 */5 * * * *" />
   </task:scheduled-tasks>




cronの記述方法については下記
http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-06



記事を書いていて気づいた、
このscheduler自体をJob化すればadminからスケジュールの開始、停止もできる

0 件のコメント: