Spring Batch MultiResourceItemReader每个资源的块提交

时间:2017-07-03 07:59:19

标签: java spring spring-batch

我目前有一个执行以下操作的Spring Batch作业:

  1. 使用委托给FlatFileItemReader的MultiResourceItemReader读取csv文件列表。
  2. 将每个文件拆分为块并将每个块写为JMS消息,每条消息包含块中的行列表和JSON格式的底层资源的文件名。
  3. 我想要的是每个块只包含来自单个文件资源的行,以便JMS消息上的文件名将链接到相应的文件。

    问题在于,当一个文件资源的处理完成时,阅读器将继续并处理下一个资源,这意味着来自多个资源文件的行被插入到同一个块中,并且filename属性不一定与底层资源相匹配块中的数据。

    是否有任何干净的方法可以防止读者在同一块中包含来自单独文件资源的行?

    编辑:我认为解决方案需要使用自定义块完成策略以某种方式确定正在读取的当前项是否来自与上一行相同的资源,但不确定这是否可行。有什么想法?。

1 个答案:

答案 0 :(得分:0)

我改变了我的实现,使用MultiResourcePartitioner为每个文件创建一个分区步骤,现在一切正常。