在工作指导中找不到工作



我正在尝试停止弹簧批处理执行。我尝试了

jobExecution.stop();
jobRepository.update(jobExecution);

对工作没有影响。

我尝试

jobOperator.stop(JOB_EXECUTION_ID);

我正在得到Nosuchjobexception。我是春季批次的新手。谁能解释为什么我会得到Nosuchjobexception?

进行了一些调试后,我发现在职位指导中找不到工作。JobExplorer和JobRepository能够找到工作。作业指导需要任何特定的配置吗?

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]

是错误堆栈

不使用 JobExecution.stop,将在未来版本中删除(请参阅batch-1987)。

JobOperator#stop(jobExecutionId)是必经之路。错误 NoSuchJobFoundException不是弹簧批次异常,所以我不知道什么是含义。我能想到的最接近的例外是org.springframework.batch.core.launch.NoSuchJobExecutionException,如果工作运算符找不到具有给定ID的执行,则将其抛出。确保您将有效的作业执行ID传递给stop方法。

此代码帮助我

@Bean
public JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor() {
    JobRegistryBeanPostProcessor postProcessor = new JobRegistryBeanPostProcessor();
    postProcessor.setJobRegistry(jobRegistry);
    return postProcessor;
}

阅读有关JobRegistry的文档

最新更新