由于对Spring Batch中的Step Chaining众说纷纭,根据用例不同,我想知道最常识是什么:
Chaining of Steps,即一个 Job 有一个 Step 流,其中每个 Step 都有 Reader、Processer 和 Writer。使用 Job ExecutionContext 交换步骤之间的数据。
或
ItemProcessors 链,即一个作业只有一个步骤,但有一个 ItemProcessors 流。
我认为第一种可能性更合理,因为名称“Job”意味着有几个步骤可以完成它。在许多用例中的缺点可能是,在步骤的开始和结束时会有冗余或有时是“空”的读写。 第二种是最常见的解决方案,但我认为这种“一步”解决方案并不完全是批处理的目的。
你对此有何看法?
最佳答案
ItemProcessors 的用处非常有限,它们最适用于你想要转换你读入的每个项目的情况。你可以使用它们来过滤掉你不想要的行,但在某些情况下(当你的读者执行一个 SQL 查询)很快就会变得浪费,如果你能避免首先阅读这些行,它会更有效率。
在过程中有一个钩子(Hook)能够放入 ItemProcessors 很好,但我不会过度使用它。大多数非平凡的工作似乎有多个步骤,框架为错误处理、分块、分区等步骤提供支持,其中 ItemProcessors 与步骤相比非常轻量级,框架不提供任何支持在工作流程中为他们提供一席之地。
(声明“使用作业执行上下文交换步骤之间的数据”似乎有问题。我用它来保存读取或写入的行数之类的东西。它不是放置任何比它大得多的东西的好地方那个。)
关于java - 步骤链接的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40723049/