2017-07-26 184 views
-1

我是spring批處理新手,需要讀取和處理從文本到csv的500 000行。我的物品處理器花了五分鐘處理100行,這將導致近兩天的處理和寫入500k行。春季批次中的多線程

如何同時調用物品閱讀器和處理器?

回答

1

您可以使用「SimpleAsyncTaskExecutor」並行處理和按如下方式使用它在你的Spring應用程序上下文:

<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永遠不會,所以它永遠不會結束。請閱讀spring批處理文檔。如果它解決了你的問題,你也應該接受答案。 – KayV