java - java中jobExecution.getStatus()什么时候返回BatchStatus.STOPPED值?
问题描述
我正在使用 spring.batch.core 的 JobExecution。我正在像这样使用 JobExecutionListenerSupport 的 afterJob 覆盖方法
@Override
public void afterJob(JobExecution jobExecution) {
if (jobExecution.getStatus() == BatchStatus.FAILED) {
log.error();
throw new AbortingJobException();
} else if (jobExecution.getStatus() == BatchStatus.STOPPED) {
log.info(jobExecution.getJobInstance().getJobName() + " Stopped");
} else if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
// does something
}
}
我想知道什么时候jobExecution.getStatus() == BatchStatus.STOPPED
成真?
解决方案
Spring Docs 解释了何时停止作业
https://docs.spring.io/spring-batch/docs/current/reference/html/job.html#stoppingAJob
关闭不是立即的,因为没有办法强制立即关闭,特别是如果执行当前在框架无法控制的开发人员代码中,例如业务服务。但是,一旦控制权返回给框架,它就会将当前 StepExecution 的状态设置为 BatchStatus.STOPPED,保存它,然后在完成之前对 JobExecution 执行相同的操作。
推荐阅读
- javascript - 如何删除过滤器中的空数组
- gitlab - 如何使用 VirtualBox 执行器设置 Gitlab-runner
- java - 方法参考 - 语法错误,插入“;” 完成 BlockStatements
- python - 电子商务网站是否需要在 django 中使用单独的身份验证系统?
- xaml - 如何更改标签上标签的背景颜色。但背景将在弯角 Xamarin.Forms
- c# - 继承时无法访问类字段
- elasticsearch - Elasticsearch,搜索以开头的单词
- php - 如何通过 cURL 正确地将 POST 请求发送到 REST API?
- scala - 从 trait 意外行为的案例类继承
- reactjs - 将图像的 URL 从 firebase 存储存储到 firebase 数据库 - URL 在网络空间中丢失