작성
·
331
0
안녕하세요. 강의 잘 보고있습니다.
다름이 아니고 동일한 Job파라미터로 실행했을때 전 강의에서 분명히 예외가 발생했던 것 같은데 어느순간부터 예외가 발생하지 않고 해당 데이터가 쌓입니다. 해당 테이블은 batch_job_execution 테이블입니다. 예외가 발생하게 할 순 없을까요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
Spring Batch에서 동일한 Job 파라미터로 Job을 실행할 경우 기본적으로는 한 번 실행에 성공한 Job은 재실행 시 JobInstanceAlreadyCompleteException
예외가 발생합니다. 이미 성공적으로 수행된 동일한 파라미터를 가진 JobInstance
를 다시 실행하려 할 때 이 예외가 발생하는 것이 정상적인 동작입니다.
다만, 스크린샷을 보니 STATUS
가 COMPLETED
고 EXIT_CODE
가 NOOP
인 것으로 보아 이후의 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님.