如何使用 Spring Integration 处理大文件

时间:2021-06-29 01:09:55

标签: spring-boot spring-integration spring-integration-dsl

我正在处理非常大的文件并使用 Spring Integration 来处理它们。我想知道使用 Spring Integration 和提供的 DSL 处理它们的最佳和最有效的方法是什么。我有一个包含大约 30K 条记录的测试 CSV 文件,我正在使用 FileSplitter 组件将每一行读入内存,然后根据分隔符再次拆分以获得我需要的列。

下面的代码片段。

IntegrationFlows
            .from(Files.inboundAdapter(new File(inputFilePath))
                    .filter(getFileFilters())
                    .autoCreateDirectory(true) ,
                    c -> c.poller(Pollers.fixedRate(1000))
                    
                    )
            
            .split(Files.splitter())
            .channel(c -> c.executor(Executors.newWorkStealingPool()))
            .handle((p, h) -> new MyColumnSelector().getCol((String) p, 1))
            .split(s -> s.applySequence(true).delimiters(","))
            .channel(c -> c.executor(Executors.newWorkStealingPool()))
            .get()

1 个答案:

答案 0 :(得分:0)

问题是 IDE 和控制台日志记录开销导致速度变慢。我在没有任何 IDE 或任何额外日志记录的情况下使用相同的文件对此进行了测试,并且处理速度明显加快。