2017-01-18 18 views
0

春のバッチが初めてです。春バッチ処理後のファイル移動

フォルダから複数のファイル(デリミタ)を読み込み、DBに読み込む必要があります。私はそれをしました。

しかし、私の問題は、各ファイルが処理された後、processedフォルダにファイルを移動するか、エラーレコードをErrorフォルダに移動する必要があります。私は複数のファイルから下のファイル(abc.txt)処理する場合

例えば:

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

を私は2回目のレコードがエラーであることを知っています。

エラーフォルダにエラーファイル(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