Spring 在写入器之前批量链接读取器和处理器

Spring Batch Chaining readers and processors before writer

我想在 Spring 批处理中实现以下链:

(A)ItemReader[第一个输入] -> (A)ItemProcessor [第一个输入] -> (B)ItemReader [使用处理过的输入从另一个来源收集第二个输入] -> (B)ItemProcessor [使用处理过的第一个输入和第二个输入] -> {重复 B} -> ItemWriter(最终结果)

有人知道如何在 Spring 批处理中执行此操作吗? 谢谢

我看这里没有任何问题。您只需将处理 A 的结果存储到某个存储中并在 (B) ItemReader 中读取它。

这里的主要问题是您是否希望您的作业可以重新启动。

  • 如果没有,您可以将中间结果存储在一些内存中的哈希映射或其他任何地方。
  • 如果您希望它可以重新启动(例如故障安全)——那么更喜欢一些持久性存储。

我不推荐这种方法。我会推荐一个更简单的:

(A)ItemReader[第一个输入] -> (A)ItemProcessor [第一个输入] -> (B)ItemProcessor [将第一个输入转换为第二个输入] -> (B)ItemProcessor [使用处理过的第一个输入和第二个输入input ] -> {repeat B} -> ItemWriter (最终结果)

一个ItemProcessor既可以用于富集也可以用于转化。 B 的流程中的 reader 我将替换为将第一个输入转换为第二个输入的 ItemProcessor