如何在spring-batch ItemReader中使用新的java 8 streams.parallel api
list.stream().parallel().forEach(file -> readLines(file));通常,ItemReader读取文件中的所有行,直到定义的块大小,然后将块列表传递给项目编写器。当编写器完成时,读取下一个块。
我希望reading+writing的这个进程使用java8 stream.parallel api。这有可能吗?
发布于 2015-04-27 23:14:20
在阅读器本身,我不能100%确定用例是否有意义。流api的思想是从源操作流到终端操作。Spring Batch ItemReader的合同是一次提供一个项目,这显然不是很理想。我认为最接近的方法是使用流api将项加载到内存中,但没有办法阻止它在项之间甚至块之间进行读取。
我一直在考虑创建一个使用流概念的Step实现(要么是Java8Streams,要么是通过Reactor或RxJava的反应式流),但这最早也要到3.1版本才能实现(如果您感兴趣,我很乐意与您合作)。这将使用某种类型的流提供者作为“读取器”,中间函数充当“处理器”的角色,而终端函数充当“写入器”。
https://stackoverflow.com/questions/29897779
复制相似问题