Как поддержать передачу уникального имени задания через переменную среды в Spring Batch Job?

Я только начинаю использовать Spring Batch. Я работаю над средством запуска командной строки, используя AWS Batch с образом Docker. Попытка просто отсортировать имена экземпляров задания.

Было бы приемлемо использовать @Value для приведенной ниже буквенной строки в jobBuilder? По сути, я передаю ключи S3 File, которые уже будут уникальными значениями, так как у меня есть задача, которая захватывает файл перед запуском моего FlatFileReader. Цель состоит в том, чтобы облегчить попытки выполнения задания, когда это необходимо из-за сбоя.

  @Bean
    public Job jobParametersJob() {

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

    }

1 ответ

Решение

В итоге я решил использовать инкрементатор, который реализует 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();

    }
Другие вопросы по тегам