【问题标题】:Spring batch starts from beginning after restart from dataflow从数据流重新启动后,Spring 批处理从头开始
【发布时间】:2020-12-26 11:34:59
【问题描述】:

我开发了一个简单的spring批处理应用程序并通过spring cloud dataflow启动它。 但是,当我从数据流重新启动失败的作业时,批处理会从头开始,而不是从最后一次执行开始。 招聘启事:

Map<String,JobParmeter> maps = new HashMap<>();
maps.put("jobID",new JobParameter(System.currentTimeMillis()));
JobExecution jobExecution = jobLauncher.run(job,new JobParameters(maps));

工作配置:

jobBuilderFactory.get("job").start(step).build();

其他一切都是@Autowired,没有自定义配置。我正在使用 Spring Boot 应用程序。

如果我不使用自定义作业启动器(上述代码中的 JobLaunch),批处理将始终重新启动。即使前一个实例已完成,也永远不会创建作业的新实例。

请帮助我正确配置作业。

【问题讨论】:

    标签: spring-boot spring-batch spring-cloud-dataflow


    【解决方案1】:

    由于您在每次运行时为作业参数添加新时间戳,因此每次都会获得不同的作业实例。如果您确实想重新启动 FAILED 作业实例,则需要传递与上次运行相同的识别作业参数(在您的情况下为 jobID)。

    即使先前的实例已完成,也永远不会创建新的作业实例。

    这是设计使然。无法重新启动 COMPLETED 作业实例。

    【讨论】:

    • 是的,我明白这一点,但我正在使用 spring 云数据流来重新启动一个应该传递相同参数的作业(在我的例子中是 jobID)。我没有手动传递任何参数。但每次我重新启动作业时,它都会创建新的作业实例 ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2023-04-08
    • 2020-04-09
    • 1970-01-01
    相关资源
    最近更新 更多