【发布时间】:2021-06-27 13:48:30
【问题描述】:
我已经使用 jobLauncher.run(processJob,jobParameters); 开始了我的工作,当我尝试使用另一个请求 jobOperator.stop(jobExecution.getId()); 停止工作时,得到异常:
org.springframework.batch.core.launch.JobExecutionNotRunningException: JobExecution 必须正在运行才能停止
Set<JobExecution> jobExecutionsSet= jobExplorer.findRunningJobExecutions("processJob");
for (JobExecution jobExecution:jobExecutionsSet) {
System.err.println("job status : "+ jobExecution.getStatus());
if (jobExecution.getStatus()== BatchStatus.STARTED|| jobExecution.getStatus()== BatchStatus.STARTING || jobExecution.getStatus()== BatchStatus.STOPPING){
jobOperator.stop(jobExecution.getId());
System.out.println("###########Stopped#########");
}
}
当打印作业状态总是得到job status : STOPPING 但批处理作业正在运行时
它的 web 应用程序,首先上传一些 CSV 文件并使用 Spring Batch 开始一些操作,在此执行期间如果用户需要停止然后停止来自另一个控制器方法的请求并尝试停止运行作业
请帮我停止运行工作
【问题讨论】:
-
这是否意味着
jobExplorer.findRunningJobExecutions("processJob")以STOPPING状态返回作业执行?您的作业是否在相同的 JVM 中运行?请分享有关您的设置的更多详细信息(作业启动器和作业操作员是否共享相同的数据源?)。 -
@MahmoudBenHassine 是的,它的 Web 应用程序,首先上传一些 csv 文件并使用 Spring Batch 开始一些操作,在此执行期间,如果用户需要停止然后停止来自另一个控制器方法的请求并尝试停止运行作业
标签: spring-batch spring-batch-job-monitoring