0

我刚刚开始使用 Spring Batch。我正在使用带有 Docker 映像的 AWS Batch 开发命令行启动器。试图对作业实例命名进行排序。

在 jobBuilder 中为以下文字字符串使用 @Value 是否可以接受?本质上,我正在传递 S3 文件键,这些键已经是唯一值,因为我有一个在我的 FlatFileReader 运行之前抓取文件的任务。目标是在由于失败而需要时促进对作业的重试。

  @Bean
    public Job jobParametersJob() {

        return jobBuilderFactory.get("PassedInValue")
                .start(step1())
                .next(step2())
                .next(step3())
                .build();

    }
4

1 回答 1

0

我最终通过使用实现 JobParametersIncrementer 的作业增量器来解决。请注意,在我的情况下,我目前没有传递任何作业参数,所以这里设置它们,因为我的参数目前只是通过环境变量传递给 docker 容器。

public class JobIncrementer implements JobParametersIncrementer {

@Value("${s3filekey}")
String s3filekey;

@Override
public JobParameters getNext(JobParameters jobParameters) {
    return new JobParametersBuilder().addString("s3filekey",s3filekey).toJobParameters();

}...//then in job configuration...

    @Bean
    public Job jobParametersJob() {

        return jobBuilderFactory.get("jobParametersJob")
                .incrementer(jobIncrementer)
                .start(step1())
                .next(step2())
                .next(step3())
                .build();

    }
于 2018-08-11T14:42:23.813 回答