【发布时间】:2014-08-11 04:27:17
【问题描述】:
我想构建一个包含 3 个步骤的批处理。我想像这样配置这些步骤 如果 step1 读取和处理并写入 10 个块 step02 时有 100 条记录,则 step03 开始并结束,然后再次返回 step1 并读取下一个块。 这在春季批次中可能吗?
【问题讨论】:
标签: spring batch-processing spring-batch
我想构建一个包含 3 个步骤的批处理。我想像这样配置这些步骤 如果 step1 读取和处理并写入 10 个块 step02 时有 100 条记录,则 step03 开始并结束,然后再次返回 step1 并读取下一个块。 这在春季批次中可能吗?
【问题讨论】:
标签: spring batch-processing spring-batch
大概是可以的。
您必须认为,在第 2 步中,您必须再次“阅读”第 1 步读取的最后 10 个项目,因为在步骤中阅读器是强制性的,并且这些项目应该存储在执行上下文中,所以最好的做法是只存储密钥(如果你正在工作使用 DB 或其他涉及查询驱动程序解决方案的解决方案)以最大限度地减少数据使用,因为执行上下文存储在 SB 元数据表中。
第 3 步也一样。
在带有JobExecutionDecider 的第 3 步之后,如果您有更多元素要处理或移至作业结束,请返回第 1 步。
这可能是一个可能的解决方案,但是 - 恕我直言 - 与我们过去使用 SB 设计工作流程的方式相比,这看起来像是一种变态;你确定你不能用一个步骤、3 个处理器和少数听众重新思考工作流程来完成同样的工作吗?
【讨论】: