jsr352 - 在运行期间停止 JSR 批处理应用程序而不抛出异常
问题描述
我们有一个 jsr 352 java 批处理应用程序,如果满足条件但不抛出异常,我们希望提前停止执行。我们工作的基本布局如下:
<job id=XXX>
<step id="XXX">
<listeners>
<listener ref=XXXXX /> <--Step listener
<listener ref=XXXX /> <-- Item process listener
</listeners>
<chunk checkpoint-policy="item" item-count="1">
<reader ref=XXXXXX />
<processor ref=XXXXXX />
<writer ref=XXXXXX />
</chunk>
</step>
</job>
在我们的 step 监听器中,在 beforeStep() 方法中,如果满足特定条件,我们不想继续批处理作业的其余部分,我们只想优雅地停止。到目前为止,唯一会结束批处理作业的事情将是针对错误场景引发的异常或作业的成功完成。
如果在步骤侦听器中满足该条件,我们将如何完成跳过其余步骤,因为它是唯一的步骤?此外,抛出异常是在错误情况下结束批处理过程的推荐方法,还是有更好/更推荐的方法?
解决方案
您可以有一个外部组件来监视条件并根据条件停止当前作业的执行。调用JobOperator stop方法将优雅地停止作业执行。
或者您可以让您的项目阅读器检查条件,并在 true 时返回 null,这自然会结束步骤执行。
推荐阅读
- .net - IIS Express 无法连接到 LocalDB
- c# - 如何修复数据库中已经存在名为“Books”的对象
- asynchronous - 如何在.net核心的同步方法中调用异步方法
- mongodb - Mongo / Mongoose 特殊字符查询不起作用
- python - list index out of range in list of lists Python
- java - New gallery file added broadcast intent
- java - Sort List By Variable List Of Criteria In Java
- python - 用python查找线和形状文件之间的交点
- xcode - dynamic framework: how to hide the local symbols?
- python - 如何有效地简化分数?