我正在尝试停止Spring批处理执行。我尝试过
jobExecution.stop();
jobRepository.update(jobExecution);
对工作没有影响。
当我尝试
jobOperator.stop(JOB_EXECUTION_ID);
我正在获取NoSuchJobException。我是Spring Batch的新手。谁能解释我为什么会收到NoSuchJobException?
经过一些调试后,我发现JobRegistry中找不到Job。 JobExplorer和JobRepository能够找到工作。 JobRegistry是否需要任何特定的配置。
07:22:27.625 WARN o.s.b.c.l.s.SimpleJobOperator : Cannot find Job object in the job registry. StoppableTasklet#stop() will not be called org.springframework.batch.core.launch.NoSuchJobException: No job configuration with the name [wf-demo-1552486941361] was registered
at org.springframework.batch.core.configuration.support.MapJobRegistry.getJob(MapJobRegistry.java:66) ~[spring-batch-core-4.0.1.RELEASE.jar:4.0.1.RELEASE]
at org.springframework.batch.core.launch.support.SimpleJobOperator.stop(SimpleJobOperator.java:403) ~[spring-batch-core-4.0.1.RELEASE.jar:4.0.1.RELEASE]
是错误堆栈
答案 0 :(得分:0)
请勿使用JobExecution.stop
,它将在以后的版本中删除(请参见BATCH-1987)。
JobOperator#stop(jobExecutionId)
是必经之路。错误NoSuchJobFoundException
不是Spring Batch异常,所以我不知道这是什么意思。我能想到的最接近的异常是org.springframework.batch.core.launch.NoSuchJobExecutionException
,如果作业操作员找不到具有给定id的执行,则抛出该异常。确保您将有效的作业执行ID传递给stop
方法。
答案 1 :(得分:0)