spring-batch - 如何立即终止作业?
问题描述
我试图在它运行时停止我的工作。但工作不会立即停止。它仍在运行,然后抛出日志:
2019-12-03 13:23:48 [main] INFO o.s.b.c.r.s.SimpleJobRepository - Parent JobExecution is stopped, so passing message on to StepExecution
2019-12-03 13:23:48 [main] INFO o.s.b.c.s.ThreadStepInterruptionPolicy - Step interrupted through StepExecution
2019-12-03 13:23:48 [main] INFO o.s.batch.core.step.AbstractStep - Encountered interruption executing step remindStep in job remindEntrustPayment : Job interrupted status detected.
我怎么能立即终止工作?
解决方案
没有办法强制立即关闭,尤其是当控件在用户代码中时。在块边界处检查StepInterruptionPolicy
(默认为ThreadStepInterruptionPolicy
您在日志中看到的),这是当控件返回框架并停止作业时(在停止作业部分中进行了说明)。
JobOperator#stop
您可以在适当的时候使用或通过StepExecution#setTerminateOnly
在代码中设置(例如使用侦听器)来要求停止作业。
推荐阅读
- c++ - gtkmm 小部件 - 使用智能指针或指针?
- python - 如何在 Python 中使用从 CSV 中提取的值填充数据框
- swagger - APIM 中的自动更新 OpenAPI 规范
- c# - 如何将泛型类型对象传递给类构造函数
- amazon-web-services - Cloud9 给出不同的卷曲响应
- c++builder - Embarcadero C++Builder 10.4 会有社区版吗?
- react-native - 所有 react-native-paper 组件都会抛出关于 Accessibility API 的类型错误
- python - 在 django 模型中,外键没有检索实际值
- flutter - 如何使用dio在flutter中成功响应时导航到不同的屏幕
- java - 将 springboot 升级到 2.4.2 版本后,@ActiveProfiles 注释不起作用