Spring batch spring批处理中的多线程

Spring batch spring批处理中的多线程,spring-batch,Spring Batch,我是SpringBatch的新手。我需要阅读并处理从文本到csv的500000行。我的项目处理器需要5分钟来处理100行,这将导致处理和写入500k行的时间几乎为2天 如何同时调用项目读取器和处理器?您可以使用“SimpleAsyncTaskExecutor”进行并行处理,并在spring应用程序上下文中使用它,如下所示: <bean id="taskExecutor" class="org.springframework.core.task.SimpleAsyncTaskExec

我是SpringBatch的新手。我需要阅读并处理从文本到csv的500000行。我的项目处理器需要5分钟来处理100行,这将导致处理和写入500k行的时间几乎为2天

如何同时调用项目读取器和处理器?

您可以使用“SimpleAsyncTaskExecutor”进行并行处理,并在spring应用程序上下文中使用它,如下所示:

<bean id="taskExecutor"
    class="org.springframework.core.task.SimpleAsyncTaskExecutor">
</bean>
<tasklet task-executor="taskExecutor">
    <chunk reader="deskReader" processor="deskProcessor"
           writer="deskWriter" commit-interval="1" />
</tasklet>

然后,您可以在特定的tasklet中指定此taskExecutor,如下所示:

<bean id="taskExecutor"
    class="org.springframework.core.task.SimpleAsyncTaskExecutor">
</bean>
<tasklet task-executor="taskExecutor">
    <chunk reader="deskReader" processor="deskProcessor"
           writer="deskWriter" commit-interval="1" />
</tasklet>

请注意,您需要定义此处指定的ItemReader、ItemWriter和ItemProcessor类。
另外,对于并行处理,您可以指定throttle limit,它指定要并行运行的线程数量,如果未指定throttle limit,则默认为4。

非常感谢。这真的很有帮助。现在,我的读处理程序和写程序被无限循环调用。有什么想法吗?@Chris将运行一个步骤,直到您的ItemReader返回null。在您的情况下,ItemReader永远不会这样做,因此它永远不会结束。还请阅读spring批处理文档。如果答案解决了你的问题,你也应该接受。