java - 如何在 Spring Batch 中调用 block 进程中的另一个步骤?

标签 java spring spring-batch

使用 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/

相关文章:

java - 挥杆 Action 的重做/撤消选项

java - RESTful 服务的自动类生成器

java - 由于 SpringBatc 中的 Chunk 计数而导致记录丢失

spring - 设置 bean 属性 'dataSource' 时出现错误无法解析对 bean 'dataSource' 的引用

java - 无效的列名异常 - 带别名的 JdbcPagingItemReader 查询

java - 如何合并来自不同服务的 WSDL 和 XSD 的公共(public)部分?

java - Java中的Repaint和paintComponent()

java - 文件对象找不到文件时有一个

java - Spring MVC,将@ExceptionHandler 迁移到 HandlerExceptionResolver 以获得 RESTful 服务

java - 访问 Thymeleaf 中的嵌入对象属性