Spring Batch - 如何使用一个读取其他步骤的编写器的并行步骤?
我是Spring批处理框架的新手 .
我在一个作业中创建了两个步骤(让我们称之为 Step1 和 Step2 ) . 我想在 parallel 中运行它们 . 不仅如此, Step2's IteamReader 应该使用 Step1's ItemWriter .
换句话说,Step2的ItemReader应该等待Step1的ItemWriter写一个块 . Step1写入后,Steps2开始读取并将其传递给处理器并进一步传递 .
我的第一个问题是,它是否可以在Spring Batch中执行此操作?如果有,怎么样?
其次,如果那是不可能的,那可能是什么工作呢?
谢谢 .
2 years ago
您可以使用
<split/>
来一次破解它以一次运行2个步骤 . 步骤1将写入步骤2可以读取的队列 . 这里的关键是确保你的Step 2的阅读器在MessageConsumer
上有一个不错的超时,所以它可以等待足够长的时间让步骤1将一个块写入队列 .那就是说,为什么你不能只使用复合处理器?
或者更好的是,你需要将其分块吗?它可能是Spring Integration或其他东西的更好用例 .
如果你真的需要分块,你可以改为破解你的读者返回
List
然后使用复合处理器链接整个块的转换 .如果你这样做,你将绕过框架通常如何工作,所以你需要将你的commit-interval设置为1(因为你只希望读者返回1个列表),而是确定你的块大小读者通过更改该列表中的项目数 .