Как поддержать передачу уникального имени задания через переменную среды в 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();
}