스프링 배치 통합을 사용하여 파일을 폴링하고 처리하고 작업 매개 변수 측면에 대한 지침을 찾고있었습니다. 내가 작업 시작 요청을 생성하고 응용 프로그램을 처음 시작에 요청스프링 배치 통합 작업 인스턴스가 이미 시작되었습니다.
@Transformer
public JobLaunchRequest toRequest(Message<File> message) {
JobParametersBuilder jobParametersBuilder =
new JobParametersBuilder();
jobParametersBuilder.addString(fileParameterName,
message.getPayload().getAbsolutePath());
jobParametersBuilder.addLong("time", new Date().getTime());
return new JobLaunchRequest(job, jobParametersBuilder.toJobParameters());
}
로 파일을 설정하려면 다음을 사용하고 하나 개의 매개 변수의 run.id.있다 파일 폴러가 찾고있는 저장소에 파일을 추가하면 db : fileParameterName과 time에 2 개의 매개 변수가 생성됩니다. 응용 프로그램을 다시 시작하면 fileParameterName 및 time 매개 변수에 이전 값을 사용하고 새로운 run.id를 추가합니다. 초기 스타트 업의 메시지는 다음과 같습니다
Job: ... launched with the following parameters:[{input.file.name=C:\Temp\test.csv, time=1472051531556}]
을하지만 난 다시 중지하고 응용 프로그램을 시작하면 다음과 같은 메시지가 뜹니다 내가 파일을 추가하면
Job: ... launched with the following parameters: [{run.id=1}]
내 응용 프로그램이 파일을 제대로 처리합니다
Job: ... launched with the following parameters: [{time=1472051531556, run.id=1, input.file.name=C:\Temp\test.csv}]
제 질문은 왜이 시작에서 이전 매개 변수를 찾고 있습니까? 이전 시간 대신 시작시 매개 변수로 현재 시간을 추가하는 방법이 있습니까? "작업 인스턴스가 이미 존재하고 매개 변수 = {}"에 대해 완료되지 않았습니까? 또는 시동시 작업 실행을 중지 하시겠습니까?
또한 응용 프로그램이 실행 중이고 파일을 추가하면 toRequest 메소드가 시작되지만 시작시에는 나타나지 않습니다.
도움이 될 것입니다. 감사합니다.
안녕, 나는 내가 그것을 구성하고있는 작업을 킥오프 쉘 스크립트를 사용하고 있지 않다 xml이며 응용 프로그램이 시작될 때 시작됩니다. – sadWal
우리는 Spring Batch에 고유 한 'value'가있는 param 이름 인 'run.id'를 주어야한다는 것을 말하고 있습니다. Spring Batch에서는 작업을 시작할 때마다 작업에 대한 새로운 인스턴스를 생성합니다. –