代码之家  ›  专栏  ›  技术社区  ›  Jim Hankins

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

  •  0
  • Jim Hankins  · 技术社区  · 6 年前

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

      @Bean
        public Job jobParametersJob() {
    
            return jobBuilderFactory.get("PassedInValue")
                    .start(step1())
                    .next(step2())
                    .next(step3())
                    .build();
    
        }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Jim Hankins    6 年前

    最后,我使用实现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();
    
        }