【问题标题】:Move file after transaction commit事务提交后移动文件
【发布时间】:2021-08-22 20:40:45
【问题描述】:

我刚开始使用 Spring Batch,不知道如何实现我的业务需求。

行为很简单:我有一个保存文件的目录。我的批次应该检测到这些文件,将它们导入我的数据库并将文件移动到备份目录(如果无法保存数据,则移动到错误目录)。

所以我创建了 1 个文件的块。阅读器检索它们,处理器导入数据。

我读过 Spring Batch 为整个块创建一个全局事务,并且只有 ChunkListener 被从事务中调用。好像还可以,但是输入的参数是一个ChunkContext。如何检索块中管理的文件?我看不到它在 ChunkContext 中的存储位置。

在选择文件必须移动的位置之前,我需要确保数据库接受插入。这就是为什么我需要在提交之后这样做。

【问题讨论】:

    标签: spring-batch listener spring-transactions


    【解决方案1】:

    您可以按照以下方式进行操作:

    • 创建一个服务(基于文件系统监视 API 或类似 Spring Integration 目录轮询),为新文件启动批处理作业
    • 批处理作业可以使用面向块的步骤来读取数据并将其写入数据库。在该作业中,您可以根据上一步的成功或失败,使用作业/步骤执行侦听器或单独的步骤将文件移动到备份/错误目录。

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2019-11-25
      • 1970-01-01
      • 2014-11-04
      相关资源
      最近更新 更多