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
。
我想在 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
。