我如何支持通过环境变量将唯一的作业名称传递给Spring Batch作业?

时间:2018-08-11 01:48:17

标签: spring-batch aws-batch

我刚开始使用Spring Batch。我正在使用将AWS Batch与Docker映像一起使用的命令行启动器。尝试仅对作业实例命名进行排序。

在jobBuilder中的下面的文字字符串中使用@Value是否可以接受?本质上,我要传递的S3文件密钥已经是唯一的值,因为我有一个任务要在我的FlatFileReader运行之前抓取文件。目标是在因故障而需要时方便重试该作业。

  @Bean
    public Job jobParametersJob() {

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

    }

1 个答案:

答案 0 :(得分: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();

    }