gpt4 book ai didi

Spring Batch : One reader, 多个处理器和编写器

转载 作者:IT老高 更新时间:2023-10-28 13:51:36 30 4
gpt4 key购买 nike

在 Spring 批处理中,我需要将 ItemReader 读取的项目传递给两个不同的处理器和写入器。我想要实现的是......

                        +---> ItemProcessor#1 ---> ItemWriter#1                        |ItemReader ---> item ---+                        |                        +---> ItemProcessor#2 ---> ItemWriter#2

这是必需的,因为与 ItemWriter#2 编写的项目相比,ItemWriter#1 编写的项目应该以完全不同的方式处理。此外,ItemReader 从数据库中读取项目,它执行的查询计算量非常大,执行两次相同的查询应该被丢弃。

关于如何实现这种设置的任何提示?或者,至少,一个逻辑上等价的设置?

最佳答案

如果您的商品应由处理器 #1 和处理器 #2 处理,则此解决方案有效

您必须使用此签名创建处理器#0:

class Processor0<Item, CompositeResultBean>

其中 CompositeResultBean 是一个 bean 定义为

class CompositeResultBean {
Processor1ResultBean result1;
Processor2ResultBean result2;
}

在您的处理器#0 中,只需将工作委托(delegate)给处理器#1 和#2,并将结果放入 CompositeResultBean

CompositeResultBean Processor0.process(Item item) {
final CompositeResultBean r = new CompositeResultBean();
r.setResult1(processor1.process(item));
r.setResult2(processor2.process(item));
return r;
}

您自己的编写器是一个 CompositeItemWriter,它委托(delegate)给编写器 CompositeResultBean.result1CompositeResultBean.result2(查看 PropertyExtractingDelegatingItemWriter,也许可以帮助)

关于Spring Batch : One reader, 多个处理器和编写器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18999724/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com