java - 继续春季批处理作业的正确方法
问题描述
我有一个带有一组步骤的春季批处理作业。
如果某个步骤由于异常而失败或被停止,我有两种可能的方法来重新启动它:
1) JobOperator.restartJob(long executionId) - 通过执行id重启
2) 从数据库中读取失败的 JobExecution 并调用 Job.execute(JobExecution execution)
第一种方法将创建 JobExecution 的副本并使用方法 Job.execute(JobExecution execution) 运行它。如果它们具有可重新启动的属性“false”,则这种方式不会重新运行已完成的步骤。这对我来说是可取的行为,但这种方式的问题是我有大量的执行上下文副本,并且反序列化它的速度不是那么快。
第二种方式只会重新运行现有的 JobExecution 实例。此外,即使它们具有可重新启动的属性“false”,它也会重新运行所有已完成的步骤。这让我很困惑,因为我只想为未完成的步骤继续执行任务。
你能解释一下我应该用什么方法吗?
解决方案
推荐阅读
- kubernetes - 如何获取在 Kubernetes 的 pod 中运行的容器的 iostats?
- react-redux - 在 redux 存储中保存与前端显示的值不同的值
- python-3.x - 烧瓶登录/注册表,逻辑错误
- r - 按组中最近的邻居合并 - R
- excel - 如果字段为空,VBA 循环取值
- git - 詹金斯:颤振酒吧获取,在PATH中找不到git
- powershell - 外部脚本未在 JEA PowerShell 中运行
- c# - 如何在 2 个 C# 类之间共享字符串
- bash - 以十六进制保存接下来的 32 个字节(搜索后)
- typescript - 在打字稿类中导入 p5