我们有一个服务调用,它返回一个id列表,我们称之为另一个服务,一次只占用一个id,因此我们使用并行处理转向true
的骆驼分割器。现在我们为服务进行的调用是通过seda进行的,因此我们可以对其进行超时。这将导致并行处理不再并行的问题,因为默认情况下seda只有1个并发消费者正在处理它。
选项:
1和2中哪一个更可取?
答案 0 :(得分:0)
首先在分割器上设置流式传输到true
对于大消息非常有用。这意味着它将以块的形式分割输入消息。这减少了内存开销。因此,这将提高大型消息的性能。
要使seda
队列真正并行处理,您需要设置seda
路由,如下所示。
<from uri="seda:report?multipleConsumers=true&concurrentConsumers=16"/>
这将允许路由为并发使用者最多使用16个线程。 seda
组件不实现任何类型的持久性或恢复,如果VM在消息尚未处理时终止,则它们将丢失。如果您需要持久性,可靠性或分布式seda
,请尝试使用jms
或activemq
direct
组件是同步的,根据文档,不推荐使用多个使用者的支持。从Camel 2.1开始:直接端点不支持多个消费者。
另一个选项是vm
组件。 vm
组件与seda
组件的不同之处在于vm
支持跨CamelContext
个实例的通信 - 因此您可以使用此机制跨Web应用程序进行通信基本上{{1} } component是vm
组件的扩展。
因此,如果您需要并行处理,则seda
组件无效。如果您需要在direct
个实例之间发送消息,请使用CamelContent
,如果没有,请按照上述说明使用vm
。