当前位置: 首页 > 知识库问答 >
问题:

Spring批量停机作业

鲁华灿
2023-03-14

我怎样才能停止一个工作在Spring批次?我尝试使用下面的代码来使用这个方法:

public class jobListener implements JobExecutionListener{

  @Override
  public void beforeJob(JobExecution jobExecution) {
    jobExecution.setExitStatus(ExitStatus.STOPPED);

  }


  @Override
  public void afterJob(JobExecution jobExecution) {
    // TODO Auto-generated method stub

  }
}

我尝试也完成了,失败了,但这个方法不工作,作业继续执行。有解决办法吗?

共有1个答案

蒲德曜
2023-03-14

您可以使用JobOperator和JobExplorer从作业外部停止作业(请参见https://docs.spring.io/spring-batch/reference/html/configurejob.html#JobOperator)。方法是stop(long executionId),您必须使用JobExplorer查找要停止的正确executionId。

另外,在作业流配置中,您可以根据退出状态将作业配置为在步骤执行后停止(请参见https://docs.spring.io/spring-batch/trunk/reference/html/configurestep.html#stopElement)。

 类似资料:
  • 目标:我正在使用spring batch进行数据处理,我希望有一个停止/恢复(在它停止的地方)的选项。 问题:我能够向正在运行的作业发送停止信号,并且它成功地被停止。但是当我试图发送启动信号到同一作业时,它创建了一个新的作业实例,并作为一个新的作业开始。 我的问题是如何在spring Batch中为停止的工作实现简历功能。

  • 问题是关于批处理作业的自动恢复策略。表示服务器由于未知原因关闭,当时有几个作业正在运行(状态为“开始”,结束时间为null)。当我们再次启动服务器时,我们如何恢复所有这些作业。 在我的情况下,我编写了自己的作业启动程序来接收请求并将它们保存到DB队列中。然后,我运行自己的作业调度程序轮询来自DB的请求并执行作业。为了将这些作业的状态从“已开始”更改为“已开始”,以便再次被我的计划程序接收,我的当前

  • 我已经使用开始我的作业,当我尝试使用另一个请求停止作业时,然后获取exeption: JobExecutionNotrunningException:JobExecution必须正在运行,才能停止 当打印作业状态总是获取但批处理作业正在运行时 它的web应用程序,首先上传一些CSV文件,并使用spring batch启动一些操作,在执行过程中,如果用户需要停止,则从另一个控制器方法来停止请求,并试

  • 在产品发布的最后一分钟,我发现Java Spring批处理有一个奇怪的问题。它进入无限循环。 这是我的配置: 记录总数为10条。因此,提交是在处理每一条记录之后进行的。我正在将结果写入Writer中的数据库。 我从阅读器中一个接一个地获取项目,处理并写入数据库。 它一直在运行,并将数据无限地插入表中。 观察结果是:提交间隔 如果有人提出一些解决方案/解决方法,在因为这个问题而举行生产发布时,这将对

  • 我们当前的代码库具有以下重要特征: 一个代码库-但是很多批处理(我们在批处理之间重用代码) 目前,我们在代码库中有多个main()方法,并且只有不同的shell脚本来调用正确的main类。 我希望在Spring Batch中解决以下问题: null 提前谢了。

  • 我很难找到这个问题的正确答案。当使用Spring批处理框架时,是否可以尝试在一个通用作业中解决所有的批处理?