2017-07-26 97 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