2017-07-26 6 views
-1

私はバネbatch.iに慣れていないため、テキストからcsvに500,000行を読み込んで処理する必要があります。私のアイテムプロセッサは100行を処理するのに5分かかるため、処理と書き込みに約2日間かかります。バネバッチでのマルチスレッディング

アイテムリーダーとプロセッサを同時に呼び出すにはどうすればよいですか?

答えて

1

あなたは、並列処理のための「SimpleAsyncTaskExecutor」を使用し、次のように春のアプリケーションコンテキストでそれを使用することができます。

<bean id="taskExecutor" 
    class="org.springframework.core.task.SimpleAsyncTaskExecutor"> 
</bean> 

、次のように、あなたはいくつかの特定のタスクレットでこののTaskExecutorを指定することができます。

<tasklet task-executor="taskExecutor"> 
    <chunk reader="deskReader" processor="deskProcessor" 
      writer="deskWriter" commit-interval="1" /> 
</tasklet> 

ここで指定したように、ItemReader、ItemWriter、およびItemProcessorクラスを定義する必要があることに注意してください。 また、並列処理では、並列に実行するスレッドの数を指定するthrottle-limitを指定できます。これは、throttle-limitが指定されていない場合はデフォルトで4です。

+0

ありがとうございます。それは本当に助けになりました。今ではリーダー・プロセッサーとライターが不定期に呼び出されています。これについての考えは? – Chris

+0

@Chris ItemReaderがnullを返すまで、ステップが実行されます。あなたの場合、ItemReaderは決して実行されないので、決して終了しません。春のバッチドキュメントもお読みください。また、あなたの問題を解決した場合は、その答えを受け入れるべきです。 – KayV

関連する問題