프로그래밍

[SpringBatch] 스프링 배치 Listener에서 전체 처리건수(readCount) 성공건수(WriteCount) 스킵건수(SkipCount) 가져오는 방법

배치 실행 결과를 서버에 로그파일을 생성하고 로그파일에 배치 실행정보를 기록할 필요가 있을때 전체 건 수, 성공 건 수, 실패 건 수, 스킵 건 수에 대한 카운트를 processor() 에서 처리하지 않고 Job Listener()에서 가져오는 방법이 있다.

Step 단계의 리스너에서 단계별 카운트 정보가 필요하지 않는 이상  Job 리스너에서 한번에 처리한다.

BatchJobListener

BatchJobListener 를 extends 해서 만든 Job listener를 생성하면 beforeExec() 메소드와 afterExec() 메소드를 오버라이드(override)해야한다.

우리가 필요한 정보는 afterExec()메소드의 JobExecution 파라미터의 getStepExections() 메소드에서 가져올 수 있다.

예시

…. 이상 생략

@Override

public void afterExec(JobExecution je) {

   Collection<StepExecution> se = je.getStepExecution();

   for(StepExecution s : se) {

       int tot =  (int) s.getReadCount();

       int succ =  (int) s.getWriteCount();

       int skip =  (int) s.getSkipCount();

   }

}

……이하생략

만약 오류를 켓취하고 싶다면 아래 코드와 같이 가져올 수 있다.

List<Throwable> errList = je.getAllFailureExceptions();

if(errList!=null && errList.size() > 0){

    //TODO

}

error: Content is protected !!