在Apache Camel中,窃听和组播有什么区别?

12

在Camel中,wireTap和multicast的默认行为似乎相似。它们都有助于以不同的方式处理相同的消息。 那么,wireTap和multicast之间的主要区别是什么?

3个回答

18

@Srikanth -

我不认为您可以通过使用WireTap实现并发。

这并不完全正确。使用WireTap和使用多播一样都可以实现并发处理。

这是WireTap的主要目的之一,例如用于记录日志或审计等非功能性操作,在不影响主线程的情况下在外部线程中执行。

它们的区别在于:

  • WireTap是“单向叉”,消息会以与主线程并行的不同线程发送到被监听的端点,无法从中获取响应并返回到主线程。

    此外,还可以将除主体、标头等之外的其他内容发送到被监听的端点。

  • 使用多播后,可以在并行或顺序处理后的主线程中“分裂再聚合”结果。

    此外,可以多播任意数量的端点,而WireTap只能有一个端点可供发送。


2

在旧版且已弃用的多播路由器中,这是同步进行的,这意味着主流程必须等待所有路由的执行时间总和。

在3.5中引入了一种新的多播路由器,它可以并行地执行相同的操作,使主流程只需等待最慢的路由即可。


1
多播:多播EIP允许将相同的消息副本并发地发送给多个接收者。 WireTap:Wire Tap(来自EIP模式)允许您在将消息转发到最终目的地时将其路由到单独的位置。
我认为使用WireTap并行地向多个接收者发送消息无法实现并发。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接