骆驼分离器并行处理

时间:2014-02-24 11:47:39

标签: parallel-processing apache-camel

我们有一个服务调用,它返回一个id列表,我们称之为另一个服务,一次只占用一个id,因此我们使用并行处理转向true的骆驼分割器。现在我们为服务进行的调用是通过seda进行的,因此我们可以对其进行超时。这将导致并行处理不再并行的问题,因为默认情况下seda只有1个并发消费者正在处理它。

选项:

  1. 在seda上放置一个?concurrentConsumers = x
  2. 使用直接而不是seda。 (没有超时选项?)
  3. 还有其他选择吗?
  4. 1和2中哪一个更可取?

1 个答案:

答案 0 :(得分:0)

首先在分割器上设置流式传输到true对于大消息非常有用。这意味着它将以块的形式分割输入消息。这减少了内存开销。因此,这将提高大型消息的性能。

要使seda队列真正并行处理,您需要设置seda路由,如下所示。

<from uri="seda:report?multipleConsumers=true&amp;concurrentConsumers=16"/>

这将允许路由为并发使用者最多使用16个线程。 seda组件不实现任何类型的持久性或恢复,如果VM在消息尚未处理时终止,则它们将丢失。如果您需要持久性,可靠性或分布式seda,请尝试使用jmsactivemq

direct组件是同步的,根据文档,不推荐使用多个使用者的支持。从Camel 2.1开始:直接端点不支持多个消费者。

另一个选项是vm组件。 vm组件与seda组件的不同之处在于vm支持跨CamelContext个实例的通信 - 因此您可以使用此机制跨Web应用程序进行通信基本上{{1} } component是vm组件的扩展。

因此,如果您需要并行处理,则seda组件无效。如果您需要在direct个实例之间发送消息,请使用CamelContent,如果没有,请按照上述说明使用vm