Spring Batch - 19. JobParameters 증가 JobParametersIncrementer

출처

목차

JobParameters 증가 - JobParametersIncrementer

JobParameters 의 변경없이 Job 을 여러번 재시작 하고 싶은 경우 설정

JobParameters 의 필요한 값을 증가시켜 다음에 사용될 JobParameters 객체를 반환합니다.

기존의 JobParameters 의 변경없이 Job 을 여러번 재시작 하고 싶은 경우 설정합니다.

RunIdIncrementer 구현체를 지원하며 필요에 따라 JobParametersIncrementer 인터페이스를 직접 구현할 수 있습니다.

JobParametersIncrementer 인터페이스

public interface JobParametersIncrementer {

JobParameters getNext(@Nullable JobParameters parameters);
}
public class CustomJobParametersIncrementer implements JobParametersIncrementer {

static final SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd-hhmmss");

public JobParameters getNext(JobParameters parameters) {

String id = format.format(new Date());

return new JobParametersBuilder().addString("run.id", id).toJobParameters();
}
}

RunIdIncrementer - JobParametersIncrementer 구현체

public class RunIdIncrementer implements JobParametersIncrementer {

private static String RUN_ID_KEY = "run.id";

private String key = RUN_ID_KEY;

public void setKey(String key) {
this.key = key;
}

@Override
public JobParameters getNext(@Nullable JobParameters parameters) {

JobParameters params = (parameters == null) ? new JobParameters() : parameters;
JobParameter runIdParameter = params.getParameters().get(this.key);
long id = 1;
if (runIdParameter != null) {
try {
id = Long.parseLong(runIdParameter.getValue().toString()) + 1;
}
catch (NumberFormatException exception) {
throw new IllegalArgumentException("Invalid value for parameter "
+ this.key, exception);
}
}
return new JobParametersBuilder(params).addLong(this.key, id).toJobParameters();
}
}
Share