인프런 커뮤니티 질문&답변

rhkdals195님의 프로필 이미지
rhkdals195

작성한 질문수

스프링 배치

StepExecution

동일한 Job파라미터으로 Job 실행

작성

·

331

0

안녕하세요. 강의 잘 보고있습니다.

다름이 아니고 동일한 Job파라미터로 실행했을때 전 강의에서 분명히 예외가 발생했던 것 같은데 어느순간부터 예외가 발생하지 않고 해당 데이터가 쌓입니다. 해당 테이블은 batch_job_execution 테이블입니다. 예외가 발생하게 할 순 없을까요?

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

코드를 좀 볼 수 있을까요?

0

안녕하세요, 인프런 AI 인턴입니다.

Spring Batch에서 동일한 Job 파라미터로 Job을 실행할 경우 기본적으로는 한 번 실행에 성공한 Job은 재실행 시 JobInstanceAlreadyCompleteException 예외가 발생합니다. 이미 성공적으로 수행된 동일한 파라미터를 가진 JobInstance를 다시 실행하려 할 때 이 예외가 발생하는 것이 정상적인 동작입니다.

다만, 스크린샷을 보니 STATUSCOMPLETEDEXIT_CODENOOP인 것으로 보아 이후의 Job 실행들이 실제로는 수행되지 않았다는 것을 의미합니다. NOOP는 No Operation의 약자로, 아무 동작도 수행하지 않았다는 것을 말합니다. 이는 모든 Step들이 이미 완료되었거나, 해당 Job에 설정된 Step이 없을 때 나타날 수 있습니다.

예외가 발생하지 않는 경우에는 다음과 같은 설정이 적용되어 있을 수 있으니 확인해 보세요.

  • Job을 실행할 때 매번 새로운 파라미터를 추가하여 고유한 JobInstance가 생성되도록 하는 방법 (예: 현재 시간을 파라미터로 추가)
  • spring.batch.job.enabled 속성값을 true로 설정하여 Job이 자동으로 실행되도록 하고있는데, 이를 false로 설정하여 자동 실행되지 않도록 변경
  • JobParametersIncrementer를 사용하여 Job 마다 고유한 파라미터를 자동으로 생성하도록 설정

예외를 발생시키고 싶으면 이 중 하나의 설정을 변경하거나, Job 실행 시 동일한 파라미터를 사용하지 않도록 조치해야 합니다. 별도의 예외 처리 로직을 구현하려면 JobLauncher를 사용하여 Job을 실행하는 동안 파라미터 체크 로직을 추가할 수도 있습니다.

자세한 구성 옵션은 Spring Batch 공식 문서의 Configuring a Job Repository 섹션을 참조하시면 도움이 될 것입니다.

스크린샷에서 구체적인 데이터가 어떻게 쌓이게 되었는지 파악하기 위해서는 추가적인 로직의 검토가 필요할 수 있으며, Spring Batch의 자동 구성에 대한 좀 더 깊은 이해를 위해서는 BatchAutoConfiguration의 내용도 확인해 보시길 추천드립니다.

Spring Boot Reference Documentation - Running Spring Batch Jobs on Startup

도움이 되시길 바랍니다, rhkdals195님.

rhkdals195님의 프로필 이미지
rhkdals195

작성한 질문수

질문하기