骆驼使用没有聚合器的分离器
Camel Use a splitter without aggregator
我是 Camel 的新手,我想用它来读取 FTP 服务器上的 XML 文件,并为 [=27] 的所有 NODE 元素创建一个同步进程=].
确实,我将使用拆分器来处理每个节点(我使用流,因为 XML 文件很大)。
from(ftp://user@host:port/...)
.split().tokenizeXML("node").streaming()
.to("seda:processNode")
.end();
然后到nodeProcessor的路由:
from("seda:processNode")
.bean(lookup(MyNodeProcessor.class))
.end();
我想知道是否可以在没有聚合器的情况下使用拆分器?就我而言,我不需要汇总所有已处理节点的结果。
我想知道在 Camel 中让许多 "splitted" 线程进入 "dead end" 而不是聚合是不是一个问题?
Camel 提供的示例显示了没有聚合器的拆分器,但它们仍然提供了带有拆分器的 aggregationStrategy。是强制性的吗?
不,这是完美的,你可以使用没有 agg 策略的拆分器,这很正常,比如拆分器 EIP:http://camel.apache.org/splitter
如果你使用 agg 策略,那么它更像是这个 EIP:http://camel.apache.org/composed-message-processor.html 这只能在 Camel 中使用拆分器来完成。
我是 Camel 的新手,我想用它来读取 FTP 服务器上的 XML 文件,并为 [=27] 的所有 NODE 元素创建一个同步进程=].
确实,我将使用拆分器来处理每个节点(我使用流,因为 XML 文件很大)。
from(ftp://user@host:port/...)
.split().tokenizeXML("node").streaming()
.to("seda:processNode")
.end();
然后到nodeProcessor的路由:
from("seda:processNode")
.bean(lookup(MyNodeProcessor.class))
.end();
我想知道是否可以在没有聚合器的情况下使用拆分器?就我而言,我不需要汇总所有已处理节点的结果。
我想知道在 Camel 中让许多 "splitted" 线程进入 "dead end" 而不是聚合是不是一个问题?
Camel 提供的示例显示了没有聚合器的拆分器,但它们仍然提供了带有拆分器的 aggregationStrategy。是强制性的吗?
不,这是完美的,你可以使用没有 agg 策略的拆分器,这很正常,比如拆分器 EIP:http://camel.apache.org/splitter
如果你使用 agg 策略,那么它更像是这个 EIP:http://camel.apache.org/composed-message-processor.html 这只能在 Camel 中使用拆分器来完成。