当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring集成处理大型文件

易研
2023-03-14

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

下面的代码段。

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个答案

寇鸿
2023-03-14

问题是IDE和控制台日志开销减慢了速度。我使用相同的文件测试了它,没有任何IDE或任何额外的日志记录,它的处理速度显着加快。

 类似资料:
  • 在我的spring-batch-integration应用程序中,文件轮询调用eachfile的batchjob,该应用程序可以在多个服务器(节点)上运行,但它们都应该读取一个公共目录。代码如下 } 现在,当我调用Spring批处理并尝试使用flatfileitemreader读取该文件时,它给了我

  • 如何使用java dsl Integrationflows从spring集成触发spring批处理作业。 我有下面的代码,它轮询目录中的文件,当新文件添加到目录中时,会生成一条消息,我想在该实例中触发一个Spring批处理作业。请建议。

  • 我有一个spring批处理应用程序,它从文件中读取数据,进行一些处理,最后编写一个定制的输出。这一切都是一步到位的。在下一步中,我将使用一个tasklet来归档输入文件(移动到另一个文件夹)。这个应用程序运行良好。但是,现在我需要在远程服务器上对sftp输出文件进行进一步处理。我找到了一种使用spring integration实现sftp的方法,在这里我创建了一个输入通道,该通道将反馈给outb

  • 问题内容: 我正在尝试使用Spring和JdbcTemplate遍历MySQL中表的每一行。如果我没记错的话,它应该很简单: 我收到一个OutOfMemoryError,因为它试图读取整个内容。有任何想法吗? 问题答案: 在 javadoc中已经指出: 向JDBC驱动程序 提示 应从数据库中获取的行数 驱动程序实际上可以自由地应用或忽略提示。一些驱动程序忽略它,一些驱动程序直接应用它,一些驱动程序

  • 当RabbitMq消息到达队列时,我目前正在使用IntegrationFlow来触发作业执行。IntegrationFlow的AmqpInFronChannelAdapter和作业的第一步的ItemReader都配置为从同一队列中读取消息。 我遇到的问题是IntegrationFlow的AmqpInboundChannelAdapter读取RabbitMQ消息,然后ItemReader再也找不到该

  • 我正在使用jhipster,我想在我的WebApp中集成spring批处理管理控制台。(例如http://localhost:8080/batch-console) 我尝试在我的jhipster webapp中集成以下响应,有没有一种方法可以正确地集成spring-batch-admin和spring-boot?但我得到以下错误(属性似乎未加载) Spring Boot版本:1.4.1.发布Jhi