2016-09-20 2 views
0

여러 단계가있는 주 스프링 배치 작업이 하나 있습니다. 어떤 이유로 그 작업이 실패하면 다른 작업을 호출하여 데이터베이스의 테이블을 실패 결과로 업데이트해야합니다.원본 작업이 실패한 경우 별도의 스프링 배치 작업을 실행하십시오.

일괄 처리 흐름을 구성하려면 어떻게해야합니까?

는 그래서 같은 JobExecution을 만들었지 만 나는 경우/else 문 중 하나에서 새 작업을 호출하는 방법을 모르는 :

@Bean 
    public JobExecutionListener dataListener() { 
     JobCompletionNotificationListener dataNotificationListener = new JobCompletionNotificationListener(new JdbcTemplate(dataDataSource)); 
     dataNotificationListener.afterJob(jobExecution()); 
     return dataNotificationListener; 
    } 


@Bean 
public JobExecution jobExecution() { 

     JobExecution jobExecution = new JobExecution(jobExecution()); 

     if (jobExecution.getStatus() == BatchStatus.COMPLETED) { 

      // If job completed successfully, update current job log to success 


     } else if (jobExecution.getStatus() == BatchStatus.FAILED) { 

      // If job failed, update current job log to failure 

     } 

     return jobExecution; 
    } 
+0

ItemWriter가 예외를 throw하고 종료 코드로 종료 프로세스를 종료 할 때 사용할 수 있습니다. 종료 코드가 도착하면 물건에 db의 데이터를 저장하십시오. – Rajesh

+1

리스너 afterJob()을 사용한다고 가정합니다. afterJob 메소드()에서 작업 상태를 확인할 수 있으므로 논리를 수행 할 수 있습니다. –

답변

1

당신은 당신의 일에 리스너 클래스를 추가해야하는 JobExecutionListener 인터페이스를 구현하고 jobExecution.getStatus() == BatchStatus.FAILED 조건을 확인한 후 public void afterJob(JobExecution jobExecution) 방법으로 논리를 호출하십시오.

관련 문제