【问题标题】:Spring Batch JobOperator.restart start a new job instance and don't resume job from the last chunk but just from last stepSpring Batch JobOperator.restart 启动一个新的作业实例,不要从最后一个块恢复作业,而只是从最后一步
【发布时间】:2020-06-10 14:48:42
【问题描述】:
  jobOperator.restart(JobExecutionId) 

启动一个新的作业实例,而不是从最后一个块恢复作业,而只是从最后一步开始。我需要从最后写入的块中恢复工作。

我的阅读器是一个自定义的 RestReader,它首先计算要处理的项目总数,然后从 api 读取这个确切的数字。我正在使用@StepScope 注释,因为我需要自定义阅读器中的自定义变量

Spring Batch restart functionality not working when using @StepScope

是否可以从最后写入的块恢复工作,或者问题是我的自定义阅读器?

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

    您的RestReader 必须实现ItemStream。这是有状态的项目阅读器应该实现的契约。 ItemStream#update 方法将在块边界处调用,以保存从最后一个检查点重新启动所需的任何上下文数据,以防失败。

    【讨论】:

    • 请您提供一些实施示例吗?在 RestReader 的情况下,open 和 update 方法的实现应该是什么?
    • 这是另一个问题,所以请接受这个问题的答案:stackoverflow.com/help/someone-answers。我没有示例,因为这取决于您如何定义最后一个检查点以及您要在执行上下文中保存的内容(页码、项目计数等)
    • 好的,但我应该在 read 方法中调用这个 itemstream 方法?我找不到有关 itemstream 的文档或示例
    • 不,你只需要实现它们,spring batch 会在正确的生命周期时间调用它们。项目流的文档在这里:docs.spring.io/spring-batch/docs/4.2.x/reference/html/…
    猜你喜欢
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多