我的 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/