Parallel processing 驼峰分割并行处理
我们有一个服务调用,它返回一个id列表,我们使用该列表调用另一个一次只获取一个id的服务,因此我们使用骆驼分割器,并行处理变为Parallel processing 驼峰分割并行处理,parallel-processing,apache-camel,Parallel Processing,Apache Camel,我们有一个服务调用,它返回一个id列表,我们使用该列表调用另一个一次只获取一个id的服务,因此我们使用骆驼分割器,并行处理变为true。现在,我们通过seda呼叫服务,因此我们可以在其上设置超时。这将导致并行处理不再是并行的问题,因为seda默认只有1个并发使用者在处理它 选项: 在轿厢上放置?concurrentConsumers=x 使用直接而不是seda。(没有超时选项?) 还有其他选择吗 对于1和2,哪一个更可取?首先在拆分器上将流设置为true,这对于大消息很有用。这意味着它将把输入消
true
。现在,我们通过seda呼叫服务,因此我们可以在其上设置超时。这将导致并行处理不再是并行的问题,因为seda默认只有1个并发使用者在处理它
选项:
对于1和2,哪一个更可取?首先在拆分器上将流设置为
true
,这对于大消息很有用。这意味着它将把输入消息分割成块。这减少了内存开销。因此,这将提高大型消息的性能
要使seda
队列真正并行处理,您需要如下设置seda
路径
<from uri="seda:report?multipleConsumers=true&concurrentConsumers=16"/>
这将允许路由对并发使用者使用多达16个线程。seda
组件不实现任何类型的持久性或恢复,如果VM在消息尚未处理时终止,它们将丢失。如果您需要持久性、可靠性或分布式seda
,请尝试使用jms
或activemq
direct
组件是同步的,根据文档,不推荐使用对多个使用者的支持。从Camel 2.1开始:Direct endpoint不支持多个使用者
另一个选项是vm
组件。vm
组件与seda
组件的不同之处在于vm
支持跨CamelContext
实例的通信-因此您可以使用此机制跨web应用程序进行通信本质上vm
组件是seda
组件的扩展
因此,如果您需要并行处理,direct
组件没有用处。如果您需要跨CamelContent
实例发送消息,请使用vm
如果不需要,请如上所述使用seda