【问题标题】:Design a Spring batch application to read data from different resources(Flat files)设计一个 Spring 批处理应用程序以从不同的资源(平面文件)中读取数据
【发布时间】:2020-06-27 07:52:32
【问题描述】:

我正在使用(Spring boot、java 和 Spring batch)开发一个批处理应用程序,我需要从不同位置读取数据。以下是我的用例:

  • 多个路径,例如 C://Temp//M1、C://Temp//M2 ,两个位置可以包含具有相同数据的相同文件,例如 C://Temp//M1//File1.txt, C://Temp//M2//File1.txt、C://Temp//M1//File2.txt、C://Temp//M2//File2.txt
  • 首先,如果两个位置都存在相同的文件,我需要将它们合并到内存中,然后在删除重复项后开始批处理并将合并的内存中数据作为参数传递给读取器。

我使用 multiresourceitemreader 设计了批处理,它读取平面文件并处理它们,但无法实现内存中的合并和多个文件的重复删除。 那么请您看看并建议我如何实现这一目标?

【问题讨论】:

    标签: java spring-batch


    【解决方案1】:

    根据我的经验,在处理平面文件时,我发现 BeanIO 库的使用是无价的。它还与弹簧批处理集成。 http://beanio.org/

    您可以从 2 个位置阅读哪些方面:

    1. 将您的阅读器实现为从文件 1 读取第一行然后从文件 2 读取的复合体
    2. 您首先通读阅读器文件 1,然后在处理器内部使用文件编号 2 中的数据进行丰富。
    3. 预合并文件

    【讨论】:

    • 谢谢 Alexander 但是从多个位置读取和合并文件并将其作为资源传递给 Spring 批处理阅读器会有帮助吗
    【解决方案2】:

    如果您了解 Kafka,请尝试使用 Kafka 连接框架。使用 Confluent 平台轻松使用他们的连接器。

    然后从 Kafka 消费到你的 Spring 应用程序中。

    https://www.confluent.io/hub

    如果你对卡夫卡感兴趣,我会详细给你解释

    【讨论】:

    • 谢谢,但我的项目要求使用 Spring Batch
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2012-07-30
    相关资源
    最近更新 更多