스프링 배치가 처음입니다.스프링 배치 처리 후 파일 일괄 처리
폴더에서 여러 파일 (구분 기호)을 읽고 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
이라는 별도의 파일에 기록해야합니다.
는 단일 단계 작업이다? 가능한 경우 작업 및 단계 구성을 표시하십시오. –
Teja, 움직이는 부분을 수행하는 태스크 릿과 함께 다른 단계를 추가하면됩니다. 여기에 "archiveFileTasklet"부분을 참조하십시오. http://www.javaworld.com/article/2458888/spring-framework/open-source-java-projects-spring-batch.html?page=4 –
@ 게스트, 태스크 릿이 사용되었습니다. 한 번 작업을하기 때문에. 하지만 나를 위해 나는 여러 파일에서 각 파일을 읽은 후 다른 폴더로 파일을 이동해야합니다. – Teja