[英]How to stop Job in Spring Batch remote chunking, when slaves are completed?
我正在使用此示例作为使用远程分块的Spring Batch应用程序的起点: https : //github.com/benas/spring-batch-remote-chunking-sample/blob/master/src/main/java/io /github/benas/MasterConfiguration.java在此示例中,我添加了自定义的读取器/ 写入器,但未更改任何配置。 该示例工作正常,除了所有奴隶都完成之后我无法停止工作。
我尝试使用JobListner来停止“ afterJob”方法中的作业,但没有结果。
public class MyJobExecutionListener implements JobExecutionListener {
@Override
public void beforeJob(JobExecution jobExecution) {
// TODO Auto-generated method stub
}
@Override
public void afterJob(JobExecution jobExecution) {
System.out.println("afterJob start~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println(jobExecution.getExitStatus().getExitCode());
System.out.println(jobExecution.getExitStatus().getExitDescription());
System.out.println(jobExecution.getStartTime());
System.out.println(jobExecution.getEndTime());
System.out.println(jobExecution.isRunning());
System.out.println(jobExecution.isStopping());
jobExecution.stop();
System.out.println("!!!!!!!!!");
System.out.println(jobExecution.isRunning());
System.out.println(jobExecution.isStopping());
System.out.println(jobExecution.getEndTime());
System.out.println("afterJob end~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
}
jobExecution.getExitStatus()。getExitCode()已完成jobExecution.isStopping()为true,但该应用程序仍在运行。
要运行该应用程序,我使用的是SpringBoot(而不是像示例中那样将其作为单元测试运行)
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class AppStarter {
public static void main(String[] args) {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!! start");
SpringApplication.run(AppStarter.class, args);
}
}
完成后是否可以停止应用程序?
您可以使用类似以下内容的方式显式停止主服务器的应用程序上下文:
ConfigurableApplicationContext context = SpringApplication.run(YourMasterApp.class, args);
context.close();
这将确保主端完成了作业的运行,然后关闭了应用程序上下文。
不过有几点注意事项:
afterJob
方法中使用afterJob
jobExecution.stop()
没有意义,因为该afterJob
方法几乎是结束作业之前的最后一条语句 。 此外,此jobExecution.stop()
将在以后的版本中删除(请参阅https://jira.spring.io/browse/BATCH-1987 ) 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.