通过Spring Cloud Data Flow UI提供作业参数

问题描述

在Docker中部署了数据流,并且将Spring Batch应用程序部署为“任务”并变成了任务。

我正在尝试为我的任务提供年度工作参数。我尝试使用带有@ConfigurationProperties批注的属性类,例如timestamp example。然后,我通过JobParametersIncrementer将其转换为工作参数。

        @Bean
public Job job() {
  return this.jobBuilderFactory
      .get("job")
      .incrementer(new SampleIncrementer(year))
      .start(step())
      .build();
}

class SampleIncrementer implements JobParametersIncrementer {

 private final Long year;

 public SampleIncrementer(final Long year) {
  this.year = year;
}
public JobParameters getNext(final JobParameters parameters) {
    if (isNull(parameters)) {
      return new JobParametersBuilder().addLong("year",year).toJobParameters();
    }
    if (isNull(parameters.getLong("year"))) {
      return new JobParametersBuilder(parameters).addLong("year",year).toJobParameters();
    }
    return parameters;
  }
}

但是稍后在Step中找不到job参数。

是否可以将作业参数从Spring Cloud Data Flow UI传递到执行?

passing year via UI

解决方法

作业参数作为Arguments传递,您无需指定--前缀。例如,在这种情况下,您需要在year=2011部分中指定Arguments作为参数。