inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 배치

스프링 배치 Job 동적 생성 관련 문의

1089

James Kim

작성한 질문수 7

0

안녕하세요. 스프링 배치 강의 진행 중 문의 사항이 있어서 글 남겨봅니다.

1.강의 내용에는 Job생성시 일일히 클래스를 통해 생성하고 있는데요. 동적으로 생성하면서 DB테이블에서 관리할 수 있는 방안이 있는지 궁금합니다.

2.JOB파라메터의 경우 1회 호출 후 동일한 파라메터로 재 호출이 안되는 것으로 알고 있어서 동일 파라메터로 호출 할 수 있는 방안이 있는지 궁금합니다.

3.스프링 배치 서버의 경우 이중화 구성할 경우 대체적으로 젠킨스를 이용해 배치를 실행하게 끔 처리하던데 결국은 젠킨스로 밖에 이중 실행 방지를 방법 말고는 없는건가요?

3가지 질문 관련 하여 강의 부분이 있다면 강의를 안내 부탁 드립니다.

감사합니다.

배치JOB동적생성 spring-boot spring-batch

답변 1

0

정수원

1.강의 내용에는 Job생성시 일일히 클래스를 통해 생성하고 있는데요. 동적으로 생성하면서 DB테이블에서 관리할 수 있는 방안이 있는지 궁금합니다.

 - Job 생성은 과거 xml 에서의 선언적인 방식에서 버전업이 되면서 현재 자바 Config 방식으로 생성하고 있는 추세입니다.
스프링 부트 기반에서는 강의에서 진행하고 있는 방식으로 Job 을 생성합니다.
런타임 시점의 동적 객체 생성은 자바 리플렉션 기술을 사용해서 가능하나 스프링 배치의 Job 을 그렇게 구성하는 것은 굉장히 어렵거나 거의 불가능합니다.
Job 을 구성하는 것은 Step 이나 Tasklet 과 같은 여러 설정들을 포함해야 하는데 이 모든 객체들을 동적으로 생성하는 것이 가능한지 의문입니다.
위에서 언급한 것처럼 과거 xml 방식으로 Job 과 Step, Tasklet, Chunk 등을 선언적으로 기술하면 스프링 배치가 내부적으로 리플렉션 기술을 활용해서 스프링 배치가 기동될 때 빈으로 생성합니다. 
동적으로 Job 을 생성하는 방식이 어떤 경우인지 좀 더 자세한 설명을 해 주실수 있는가요?

 

2.JOB파라메터의 경우 1회 호출 후 동일한 파라메터로 재 호출이 안되는 것으로 알고 있어서 동일 파라메터로 호출 할 수 있는 방안이 있는지 궁금합니다.


 - 원칙적으로는 동일 파라미터로 호출은 안됩니다. 다만 Job 이 실패할 경우에는 동일한 파라미터로  다시 재시작이 가능합니다. 만약 Job 이 성공적으로 종료한 상태에서 동일 파라미터로 실행을 하기 위해서는 JobParametersIncrementer 를 사용해서 단순한 순번을 증가하는 파라미터를 추가해서 실행하도록 합니다. 그렇게 되면 필수 파라미터는 동일한 값으로 전달하면서 재시작을 위한 순번 파라미터가 추가되어 결론적으로는 동일한 파라미터가 되지 않도록 하는 방법입니다. 
강의 중 
JobParametersIncrementer 챕터가 있으니 참고하시기 바랍니다

 

3.스프링 배치 서버의 경우 이중화 구성할 경우 대체적으로 젠킨스를 이용해 배치를 실행하게 끔 처리하던데 결국은 젠킨스로 밖에 이중 실행 방지를 방법 말고는 없는건가요?

- 이번 강의에서 젠킨스와 연동하는 부분은 없습니다.
다만 이중화와 관련된 부분은 젠킨스 외에도 Quartz 에서 서버 클러스트 기능을 제공하기 때문에 Active / StandBy 구조로 이중화를 구성할 수도 있습니다.
관련된 내용은 검색해 보시면 여러 자료가 나오니 참고해 주시기 바랍니다.

스프링 배치 버전 질문

0

119

1

소스코드가 어디에 있나요?

0

95

2

트랜잭션 예외

0

90

1

질문이 있습니다.

0

128

2

ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문

0

124

2

여러 JOB 설정하는법

0

148

2

강의 자료 다른 방법 있을까요?

0

154

1

JobExecution과 JobExecutionContext와의 관계

0

185

2

특정 job만 실행

1

247

1

Batch 성능 질문

0

151

1

ItemReaderAdapter 종료

0

78

1

[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader

0

178

2

Spring Batch 배포 질문

0

245

2

spring batch 버전

0

235

2

retry count 관련 질문

0

170

2

StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.

0

327

2

jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)

0

233

2

Multithread step과 AsyncItemProcessor

0

201

2

job 재실행

0

250

2

bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)

0

182

1

Multi-threaded-step과 Partitioning 차이 확인

0

171

2

jdbcCursorReader, jdbcPagingReader 질문

0

142

1

step muti-thread 질문

0

106

1

itemSteam open update close 질문

0

109

1