2017-01-18 5 views
0

스프링 배치가 처음입니다.스프링 배치 처리 후 파일 일괄 처리

폴더에서 여러 파일 (구분 기호)을 읽고 DB에로드해야합니다. 나는 그랬다.

하지만 각 파일을 처리 한 후에 파일을 processed 폴더로 이동하거나 오류 레코드를 Error 폴더로 이동해야합니다. 나는 여러 파일에서 아래의 파일 (abc.txt를) 처리 예를 들어

는 :

D|hello1|123 
D|hello2|three - Error 
D|hello3|123 

나는 두번째 기록은 오류가 있음을 알고있다.

이제 오류 폴더에 오류 파일 (abc-error.txt)의 오류 레코드를 작성하고 다음 레코드로 진행해야합니다. 파일이 오류 레코드를 제외하고 성공적으로 처리 된 후에 abc.txt을 처리 된 폴더로 이동해야합니다.

위의 요구 사항을 어떻게 충족시킬 수 있습니까?

내 직업은 :

<batch:job id="file_to_db"> 
    <batch:step id="step1"> 
     <batch:tasklet ref="moveFiletoTmpFolder" /> 
     <batch:end on="FAILED"/> 
     <batch:next on="*" to="step2" /> 
    </batch:step> 
    <batch:step id="step2"> 
     <batch:tasklet transaction-manager="transactionManager" 
      start-limit="100"> 
      <batch:chunk reader="multiResourceReader" writer="databaseItemWriter" 
       commit-interval="100"> 
      </batch:chunk> 
     </batch:tasklet> 
    </batch:step> 
</batch:job> 
<bean id="multiResourceReader" 
     class=" org.springframework.batch.item.file.MultiResourceItemReader"> 
    <property name="resources" value="file:batch/csv/processing/*.csv" /> 
    <property name="delegate" ref="cvsFileItemReader" /> 
</bean> 

작업이 한 단계는 아니다. 그러나 각 파일은 일단 처리되면 이동해야합니다. 오류 레코드는 각 파일에 대해 filename-error.txt이라는 별도의 파일에 기록해야합니다.

+0

는 단일 단계 작업이다? 가능한 경우 작업 및 단계 구성을 표시하십시오. –

+0

Teja, 움직이는 부분을 수행하는 태스크 릿과 함께 다른 단계를 추가하면됩니다. 여기에 "archiveFileTasklet"부분을 참조하십시오. http://www.javaworld.com/article/2458888/spring-framework/open-source-java-projects-spring-batch.html?page=4 –

+0

@ 게스트, 태스크 릿이 사용되었습니다. 한 번 작업을하기 때문에. 하지만 나를 위해 나는 여러 파일에서 각 파일을 읽은 후 다른 폴더로 파일을 이동해야합니다. – Teja

답변

0

청취자. Spring Batch에는 필요한 유형의 단계 나 작업에 대해이 유형의 로직을 주입하는 데 필요한 일련의 리스너가 있습니다. 오류가 발견 된 위치에 따라 적절한 청취자가 표시됩니다. 예를 들어, 읽기 중에 오류가 발견되면 ItemReadListener#onReadError 메소드를 구현하는 것이 타당합니다. 일반적으로이 유형의 로직은 프로세스의 올바른 지점에서 필요한 로직을 실행하기 위해 올바른 리스너를 구현하여 일반적으로 처리됩니다.

당신은 여기에 참조 문서에 스프링 배치가 제공하는 청취자의 일부에 대한 자세한 읽을 수 있습니다 : https://docs.spring.io/spring-batch/reference/html/configureStep.html#interceptingStepExecution