Apache Camel

时间:2017-01-05 10:32:57

标签: java apache-camel jms message-queue multicast

Camel中的wireTap和多播的默认行为似乎相似。这两者都有助于以不同方式处理相同的消息。 那么wireTap和组播之间的主要区别是什么?

3 个答案:

答案 0 :(得分:6)

@Srikanth -

  

我认为你不能通过使用wireTap实现并发性

这不太正确。并发将与WireTap一起使用,以及与并行处理的多播一起使用。

这是WireTap的主要目的。作为在主线程之外进行日志记录或审计的示例,不要使主线程慢,以进行非功能操作。

区别在于:

  • WireTap是“单向分叉”。消息转到与主线程并行的不同线程中的线控端点,并且无法从主线程获得响应。

    此外,还可以发送到主体,标题等以外的有线端点。

  • 使用Multicast,可以在并行或顺序处理后在主线程中“拆分然后聚合”结果。

    此外,不限制多播端点的数量,而WireTap只能发送一个端点。

答案 1 :(得分:1)

Multicat :Multicast EIP在将同一邮件的副本发送到多个时允许并发 收件人。

WireTap :Wire Tap(来自EIP模式)允许您在将消息转发到最终目的地时将消息路由到单独的位置。

我不认为您可以通过使用wireTap并行向多个收件人发送邮件来实现并发。

答案 2 :(得分:1)

当主流继续时,wireTap组件将消息发送到一条路由。

多播路由器通过多个路由发送消息,并在主流可以继续下一个消息处理器之前等待所有路由继续。

对于旧的且已弃用的多播路由器,它同步发生,这意味着主流必须等待所有路由执行时间的总和。

在3.5中引入了一个新的多播路由器,该路由器执行相同的操作,但并行执行,使主流仅用于最慢的路由。