Spring batch 如何支持通过环境变量将唯一的作业名称传递给Spring批处理作业?

Spring batch 如何支持通过环境变量将唯一的作业名称传递给Spring批处理作业?,spring-batch,aws-batch,Spring Batch,Aws Batch,我刚刚开始使用SpringBatch。我正在使用带有Docker映像的AWS批处理来开发一个命令行启动器。正在尝试对作业实例命名进行排序 在作业生成器中为下面的文字字符串使用@值是否可以接受?本质上,我正在传递S3文件密钥,这些密钥将是唯一的值,因为我有一个任务,在FlatFileReader运行之前抓取文件。目标是在由于故障而需要时,方便对作业进行重试 @Bean public Job jobParametersJob() { return jobBuilderF

我刚刚开始使用SpringBatch。我正在使用带有Docker映像的AWS批处理来开发一个命令行启动器。正在尝试对作业实例命名进行排序

在作业生成器中为下面的文字字符串使用@值是否可以接受?本质上,我正在传递S3文件密钥,这些密钥将是唯一的值,因为我有一个任务,在FlatFileReader运行之前抓取文件。目标是在由于故障而需要时,方便对作业进行重试

  @Bean
    public Job jobParametersJob() {

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

    }

最后,我使用了一个实现JobParametersIncrementer的job incrementer来解决这个问题。注意,在我的例子中,我目前没有传入任何作业参数,因此这里设置它们,因为我的参数目前只是通过环境变量传入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();

    }

你说,
我目前没有传递任何作业参数,但我认为这比使用
作业参数增量器
更好。在您的情况下,您没有“递增”任何参数(这反映在您的实现中,它将
s3filekey
添加为作业参数,而不使用
jobParameters
参数)。由于S3文件键是唯一的,因此在IMO中使用键作为作业参数是一个很好的选择,类似于
java-jar myjob.jar s3filekey=s3filevalue
,然后可以将该值作为env变量传递给docker映像的入口点。