【问题标题】:Spring Batch: Terminating the current running jobSpring Batch:终止当前正在运行的作业
【发布时间】:2020-09-30 23:38:24
【问题描述】:

我在终止当前正在运行的春季批次时遇到问题。我写了

Set<Long> executions = jobOperator.getRunningExecutions("Job-Builder");
jobOperator.stop(longExecutions.iterator().next());`

在通过 spring 文档后在我的代码中。

我面临的问题是有时工作的终止按预期发生,而其他时候工作的终止没有发生。事实上,每次我在 joboperator 上调用 stop 时,它都会更新 BATCH_JOB_EXECUTION 表。当终止成功发生时,通过在我的批处理过程中终止 jobExecution,作业的状态将更新为 STOPPED。其他时候,当它失败时,它正在完成批处理的其余不同流程并将状态更新为 BATCH_JOB_EXECUTION 表上的 FAILED

但每次我在作业操作员中调用 stop 时,我都会在控制台中看到一条消息

2020-09-30 18:14:29.780 [http-nio-8081-exec-5] INFO  o.s.b.c.l.s.SimpleJobOperator:428        - Aborting job execution: JobExecution: id=33058, version=2, startTime=2020-09-30 18:14:25.79, endTime=null, lastUpdated=2020-09-30 18:14:28.9, status=STOPPING, exitStatus=exitCode=UNKNOWN;exitDescription=, job=[JobInstance: id=32922, version=0, Job=[Job-Builder]], jobParameters=[{date=1601504064263, time=1601504064262, extractType=false, JobId=1601504064262}]

我的项目中有一系列流程和步骤。

我的整个批处理过程如下所示:
JobBuilderFactory 有 3 个流程
每个流程都有一个 stepbuilder 和两个 tasklet。
每个 stepbuilder 都有一个 partitioner 和一个基于 chunk(大小为 100)的 itemReader、itemProcessor 和 itemWriter。

当我在 jobBuilderFactory 中执行第一个流程时,我正在调用 stop 方法。完成整个过程大约需要 30 分钟。因此,从我调用 stop 方法开始大约需要 20-25 分钟,并且每个流中的块大小为 100,并且我正在处理超过 500k 条记录。

所以,我的问题是为什么 jobExecution 在调用停止方法时有时会停止(这是我想要的),以及为什么它无法在剩余的时间停止 jobExecution。

提前致谢

【问题讨论】:

    标签: spring spring-batch spring-framework-beans spring-batch-tasklet


    【解决方案1】:

    所以,我的问题是为什么 jobExecution 在调用停止方法时有时会停止(这是我想要的),以及为什么它无法在剩余的时间停止 jobExecution。

    从你分享的内容中很难找出原因,但我可以给你一些关于停止工作的注意事项:

    • jobOperator.stop 不保证作业停止,它只向作业执行发送停止信号。从您分享的内容来看,您没有检查返回的布尔值,该布尔值指示信号是否已正确发送,因此您应该首先执行此操作。
    • 您没有共享您的代码,但您需要使用StoppableTasklet 而不是Tasklet 以确保正确发送停止信号到您的步骤。

    【讨论】:

    • 嗨,我将 tasklet 更改为使用 StoppableTasklet 我不确定如何识别作业是否已停止并在停止覆盖方法中执行必要的操作。你能告诉我如何在覆盖方法中做到这一点
    猜你喜欢
    • 2019-06-10
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多