Spring batch Spring批处理-计算文件名的MD5哈希,然后写入文件

Spring batch Spring批处理-计算文件名的MD5哈希,然后写入文件,spring-batch,Spring Batch,我一直在使用SpringBatch生成一组csv文件到特定文件夹。最后一个任务需要生成所有文件名的MD5哈希代码,然后将该哈希写入同一文件夹中的文件 我不确定是否应该仅将此步骤作为Tasklet来实现,还是使用普通的读卡器、处理器和写入器配置 我知道我可以很容易地将所有文件名添加到一个列表中,该列表可以传递任何这些对象类型 我知道我可以在处理器或tasklet中实现生成MD5哈希的代码 我不确定如何将生成的哈希代码传递给FlatFileWriter 如果我确实使用标准的步骤模式,那么我的读卡器应

我一直在使用SpringBatch生成一组csv文件到特定文件夹。最后一个任务需要生成所有文件名的MD5哈希代码,然后将该哈希写入同一文件夹中的文件

我不确定是否应该仅将此步骤作为Tasklet来实现,还是使用普通的读卡器、处理器和写入器配置

我知道我可以很容易地将所有文件名添加到一个列表中,该列表可以传递任何这些对象类型

我知道我可以在处理器或tasklet中实现生成MD5哈希的代码

我不确定如何将生成的哈希代码传递给FlatFileWriter

如果我确实使用标准的步骤模式,那么我的读卡器应该配置成做什么

我很感激这个问题并没有严格的技术答案,但我很感激你们能给我一些建议,告诉我如何在这个场景中最好地使用SpringBatch

例如:

  • ItemReader
    将所有文件名作为资源传递给进程
  • 处理器
    最快的方式计算哈希
  • FlatFileItemWriter
    将哈希写入输出文件 但是您“失去”了可重启性,因为您可以从整个文件而不是从中间重新启动(例如):如果文件很小,这个解决方案很容易实现
  • 使用

  • 带有自定义
    ItemReader
    MultiResourceItemReader
    作为 委派
  • 自定义
    ItemProcess
  • 计算MD5总值的自定义
    ItemWriter
    对于特定资源(存储在执行上下文以及当前资源名称中),以及 传递到下一个资源将上一个资源的MD5值写入 你的档案
  • MD5ResourceBean
    使用以下属性定义:

    • 资源资源
      :md5计算下的当前资源
    • byte[]缓冲区
      :读取文件的最后一块
    • MD5 bufferMD5
      :最后一个缓冲区的MD5(由处理器计算)
    这个解决方案可能有点复杂,但可以提供完全的可重启性,并且可以很好地处理大型文件

    第三个选项是
    SystemCommandTasket
    ,前提是您已经有了一个可以一次性处理所有文件并将结果写入文件的外部程序

    我希望我能有所帮助(而且很清楚,英语不是我的母语)