【问题标题】:How to create a stream.parallel ItemReader in spring-batch?如何在 spring-batch 中创建一个 stream.parallel ItemReader?
【发布时间】:2015-07-06 00:38:01
【问题描述】:

如何在 spring-batch ItemReader 中使用新的 java 8 streams.parallel api?

list.stream().parallel().forEach(file -> readLines(file));

通常,ItemReader 从文件中读取所有行,直到定义的块大小,然后将分块列表传递给 itemwriter。当写入器完成时,会读取下一个块。

我希望这个读取+写入的过程使用 java8 stream.parallel api。这可能吗?

【问题讨论】:

    标签: java spring java-8 spring-batch java-stream


    【解决方案1】:

    在阅读器本身中,我不能 100% 确定用例是否有意义。流 api 的思想是从源流到终端操作。 Spring Batch ItemReader 的合同是一次提供一个项目,这显然不理想。我认为你能得到的最接近的方法是使用流 api 将项目加载到内存中,但没有办法阻止它在项目之间甚至块之间读取。

    我一直在考虑创建一个使用流概念(Java 8 流或通过 Reactor 或 RxJava 的反应流)的 Step 实现的想法,但这最早要到 3.1 版本才能使用(如果您有兴趣,我愿意与您合作)。这将使用某种流提供者作为“读取器”,中间函数充当“处理器”角色,终端函数充当“写入器”。

    【讨论】:

    • 具有提供者和作为读取器和处理器的功能的流概念听起来很有前途,可能是我正在寻找的。当前的 snapshop 是否已经有文档说明它是如何工作的?
    • 没有,但我们可以离线聊聊。随时离线联系我(我们可以在 Twitter 上 DM 电子邮件)进行讨论。
    • 我没有 Twitter,但在 Facebook 上给你写了信。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多