Parallel processing 驼峰分割并行处理

Parallel processing 驼峰分割并行处理,parallel-processing,apache-camel,Parallel Processing,Apache Camel,我们有一个服务调用,它返回一个id列表,我们使用该列表调用另一个一次只获取一个id的服务,因此我们使用骆驼分割器,并行处理变为true。现在,我们通过seda呼叫服务,因此我们可以在其上设置超时。这将导致并行处理不再是并行的问题,因为seda默认只有1个并发使用者在处理它 选项: 在轿厢上放置?concurrentConsumers=x 使用直接而不是seda。(没有超时选项?) 还有其他选择吗 对于1和2,哪一个更可取?首先在拆分器上将流设置为true,这对于大消息很有用。这意味着它将把输入消

我们有一个服务调用,它返回一个id列表,我们使用该列表调用另一个一次只获取一个id的服务,因此我们使用骆驼分割器,并行处理变为
true
。现在,我们通过seda呼叫服务,因此我们可以在其上设置超时。这将导致并行处理不再是并行的问题,因为seda默认只有1个并发使用者在处理它

选项:

  • 在轿厢上放置?concurrentConsumers=x
  • 使用直接而不是seda。(没有超时选项?)
  • 还有其他选择吗

  • 对于1和2,哪一个更可取?

    首先在拆分器上将流设置为
    true
    ,这对于大消息很有用。这意味着它将把输入消息分割成块。这减少了内存开销。因此,这将提高大型消息的性能

    要使
    seda
    队列真正并行处理,您需要如下设置
    seda
    路径

    <from uri="seda:report?multipleConsumers=true&amp;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