Spring Batch - 作业停止时中断线程

时间:2014-12-31 02:14:05

标签: spring spring-batch

在停止工作时,手册说

  

关闭不是立竿见影的,因为没有办法强制立即关闭,特别是如果执行当前是框架无法控制的开发人员代码,例如业务服务。

我的长时间运行步骤执行Thread.currentThread().isInterrupted()的检查并抛出InterruptedException。当然有一些方法可以中断运行该作业的线程吗?

(注意:我SimpleAsyncTaskExecutor使用TaskletStep

1 个答案:

答案 0 :(得分:1)

创建一个bean来实现

ApplicationListener<ContextClosedEvent> onApplicationEvent()

然后你可以关闭任务。

@Component
 class ContextClosedHandler implements ApplicationListener<ContextClosedEvent> {
@Autowired SimpleAsyncTaskExecutor executor;

  void onApplicationEvent(ContextClosedEvent event) {
     executor.shutdown();
  }       
}

这篇关于bean生命周期的文章也可能有所帮助

http://technicalmumbojumbo.wordpress.com/2011/04/13/spring-framework-an-introduction-part-ii-object-lifecycle-autowiring-internationalizationi18n/