【问题标题】:How to read and perform batch processing using spring batch annotation config如何使用spring批处理注释配置读取和执行批处理
【发布时间】:2021-12-15 01:59:35
【问题描述】:

我有 2 个具有不同数据的不同文件。该文件每天包含 10K 条记录。

Ex:
Productname price date
T shirt,500,051221
Pant,1000,051221


Productname price date
T shirt,800,061221
Pant,1800,061221

我想通过检查今天和昨天文件的价格差异来创建最终输出文件。

Ex: 
Productname price 
T shirt,300
Pant,800

通过使用弹簧批处理,我必须这样做。 我通过创建两个不同的步骤尝试了批量配置。但它只能读取数据。但无法 做处理。因为这里我需要两个文件的数据进行处理。但在我的情况下,它一步一步地阅读。

任何人都可以通过一些示例代码帮助我。

【问题讨论】:

    标签: spring-boot spring-batch spring-scheduled spring-batch-tasklet spring-batch-stream


    【解决方案1】:

    我建议将FlatFile 的数据保存到数据库中,用于昨天和今天的日期(如果您可以轻松识别差异的两条记录,可以是两个单独的表或在同一个表中)。使用JdbcCursorItemReaderPagingItemReader 读取此存储的数据,并在处理器级别执行数据的计算/逻辑/按摩,并根据方便创建一个新的平面文件或保存到数据库中。 OOTB Spring Batch 不提供读取数据和执行计算的功能。

    建议 - 从FlatFile 读取数据并将其保存在缓存中并从缓存中读取并进行进一步处理。

    【讨论】:

    • 公共类 YesterFileWriter 实现 ItemWriter { private CacheManager cacheManager;公共 YesterFileWriter (CacheManager cacheManager) { this.cacheManager = cacheManager; } @Override public void write(List extends YesterdaysFile> items) throws Exception { cacheManager.getCache("YESTERDAYSFILE").put("listYesterdaysData", items); } }
    • 上面的代码 sn-p 是将数据存储在缓存中,如果我这样做,那么我也必须为今天的文件做同样的事情。那么是否需要再配置一步处理呢?如果是,那么阅读器、处理器、编写器需要做什么才能将最终输出存储在数据库中?你能解释一下吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2014-12-03
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2020-06-15
    相关资源
    最近更新 更多