我正在使用 Spring Batch Admin 为我们的系统运行批处理作业。我们必须多次运行这些作业。我正在使用spring批处理管理的其余界面。我使用 Spring RestTemplate 开始了一份新工作。
RestTemplate tpl = new RestTemplate();
tpl.postForLocation(Constants.SPRING_BATCH_ADMIN_URL + "/jobs/myBatchJob;
这适用于启动第一个作业,但在后续作业中,请求不会启动该作业的新实例。在作业配置文件中,我定义了一个 jobParmatersIncrementer
<job id="myBatchJob" xmlns="http://www.springframework.org/schema/batch"
restartable="true" incrementer="jobParametersIncrementer">
<bean id="jobParametersIncrementer"
class="org.springframework.batch.core.launch.support.RunIdIncrementer" />
我尝试将我的 postForLocation 更改为
List<JobInstance> jobInstances = jobExplorer.getJobInstances("myBatchJob", 0, 30);
JobParameters jobParameters = jobInstances.get(0).getJobParameters();
RunIdIncrementer runIdIncrementer = new RunIdIncrementer();
JobParameters jobParameters = runIdIncrementer.getNext(jobParameters);
RestTemplate tpl = new RestTemplate();
tpl.postForLocation(Constants.SPRING_BATCH_ADMIN_URL +
"/jobs/myBatchJob?launch=Launch&{parameters}",
"runid",
jobParameters.toString());
通过单击启动按钮,它可以从 Spring Batch 管理页面工作。这是在参数编辑框中
run.id(long)=1
如何从另一个 Web 应用程序中多次运行 Spring Batch Admin 中的作业?