java - 如何使用 Spring Batch 对输入数据进行分组?

标签 java spring spring-integration spring-batch

我的 Spring 批处理作业从文件夹中读取 csv 文件(1 个文件夹 = 1 个作业,1 个文件夹 = 1 个工作单元)。我需要读取这些数据并使用来自外部端点的信息来丰富它们。显然,从每个 CSV 行的外部端点获取信息不是一个好主意,因为应用程序需要处理巨大的文件。但无论如何,我需要对远程端点执行多个请求,但请求取决于 CSV 文件内容。假设名为 merchantId 的列在哪里。对于每个 MerchantId,我必须执行对远程端点的请求,并使用响应中提供的数据丰富相应的 csv 行。所以我需要 Spring Batch 中的一些工具来收集所有 merchantId ,然后根据 merchantId

找到相应的行

我在 Spring 批处理中该怎么做?或者也许 Spring 集成可以以某种方式帮助我?

最佳答案

我认为您工作中的额外步骤的唯一方法是仅将所有这些 merchantIds 读取到 Set 中。为所有这些调用服务并将数据存储在 Map 中的某个位置。下一步可以再次读取这些文件,通过 Map 中的 merchantId 获取商家详细信息。不确定从源数据的角度来看这是否有效,但这样您肯定只会调用外部服务一次。

此外,我不确定是否可以不再重新读取这些文件。尽管您可能会遇到内存不足错误,否则...

关于java - 如何使用 Spring Batch 对输入数据进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57874737/

相关文章:

java - Java桌面应用程序使用什么框架

java - Tomcat 是如何管理 session 的?

java - Android/Java多线程-线程直到主线程完成工作才继续

java - 上传两个文件和一个对象失败并出现错误 415

spring - 我可以使用 Spring Integration 作为守护进程来轮询目录吗?

java - 在 JAVA 中使用 GSON 序列化内部类

java - Spring Controller 注册了两次

java - 检测 Spring Boot 应用程序时的类路径问题

java - 由于@Poller,Spring Integration @Scheduled 无法工作

java - 使用 Spring Cloud Streams 测试错误流