我正在处理非常大的文件并使用 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()
答案 0 :(得分:0)
问题是 IDE 和控制台日志记录开销导致速度变慢。我在没有任何 IDE 或任何额外日志记录的情况下使用相同的文件对此进行了测试,并且处理速度明显加快。