使用 Spring Batch 可以/建议执行以下操作吗?
我有一个 csv 文件,例如 foo.csv。我设置了一个 block 进程,将文件读入 Foo 对象,然后将它们处理为 Bar 对象。最后这些被写入文件bars.csv。
foos.csv ----[IR]----> Foo ---- [IP]-----> Bar ------[IW]----> bars.csv
where IR stands for ItemReader, IP for ItemProcessor and IW for ItemWriter
现在我想进一步处理 Bar 对象,将其转换为 Baz 对象并用它做一些其他事情,例如将其写入 bazs.csv 等文件中。
foos.csv ----[IR]----> Foo ---- [IP 1]-----> Bar ------[IW 1]----> bars.csv
---- [IP 2]-----> Baz ------[IW 2] ----> bazs.csv
或者,甚至更好
foos.csv ----[IR]----> Foo ---- [IP 1]-----> Bar ------[IW 1]----> bars.csv
----- [IW 2] ---->[Next Step]where we repeatedly call the next step within the iteration, thereby passing the next Bar object. In this next step we could then do the conversion to Baz.
总而言之:是否可以从 block 进程中调用步骤?这是不是一个好主意?如果没有,有哪些替代方案?
最佳答案
目前你至少有2个可能的解决方案
- chaining itemprocessors ,每个处理器也可以是一个编写器
- 使用数据库来保存中间工作并将其用于 future 的步骤和/或 flows
你的最后一个用例看起来最好用 message oriented solution 来实现。
关于java - 如何在 Spring Batch 中调用 block 进程中的另一个步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724213/