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 件のコメント:
コメントを投稿