如何立即终止工作?

时间:2019-12-03 06:41:44

标签: 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.


我如何立即终止工作?

1 个答案:

答案 0 :(得分:1)

没有办法强制立即关闭,尤其是当控件在用户代码中时。 StepInterruptionPolicy(默认为您在日志中看到的ThreadStepInterruptionPolicy)是在块边界检查的,这是控件返回到框架并停止作业的时间(在{{ 3}}部分。

您可以要求使用JobOperator#stop或在适当的时候在代码中设置StepExecution#setTerminateOnly(例如,使用侦听器)来要求停止工作。