Spring Batch中job的启动,停止,放弃操作
Posted ppjj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Batch中job的启动,停止,放弃操作相关的知识,希望对你有一定的参考价值。
1,启动一个job
运行一个批处理任务至少有两点要求:一个 JobLauncher 和一个用来运行的 job 。它们都包含了相同或是不同的 context 。举例来说,从命令行来启动job,会为每一个job初始化一个JVM,因此每个job会有一个自己的 JobLauncher;从web容器的HttpRequest来启动job,一般只是用一个 JobLauncher 来异步启动job,http请求会调用这个 JobLauncher 来启动它们需要的job。通过web启动job的例子:
@Controller public class JobLauncherController { @Autowired JobLauncher jobLauncher; @Autowired Job job; @RequestMapping("/jobLauncher.html") public void handle() throws Exception{ jobLauncher.run(job, new JobParameters()); } }
2,停止一个job
关闭不是立即发生的,因为没有办法将一个任务立刻强制停掉,尤其是当任务进行到开发人员自己的代码段时,框架在此刻是无能为力的,比如某个业务逻辑处理。而一旦控制权还给了框架,它会立刻设置当前 StepExecution 为 BachStatus.STOPPED ,意为停止,然后保存,最后在完成前对JobExecution进行相同的操作。
Set<Long> executions = jobOperator.getRunningExecutions("sampleJob");
jobOperator.stop(executions.iterator().next());
3,放弃一个job
以上是关于Spring Batch中job的启动,停止,放弃操作的主要内容,如果未能解决你的问题,请参考以下文章
spring boot/batch 通过代码禁用批量自动启动
Spring Batch - 为啥在 Web 上下文而不是 Job 上下文中创建/执行作业 Step bean?
Spring boot Batch - JobLauncherApplicationRunner
Spring boot spring.batch.job.enabled=false 无法识别