在Camel中,wireTap和multicast的默认行为似乎相似。它们都有助于以不同的方式处理相同的消息。 那么,wireTap和multicast之间的主要区别是什么?
在Camel中,wireTap和multicast的默认行为似乎相似。它们都有助于以不同的方式处理相同的消息。 那么,wireTap和multicast之间的主要区别是什么?
@Srikanth -
我不认为您可以通过使用WireTap实现并发。
这并不完全正确。使用WireTap和使用多播一样都可以实现并发处理。
这是WireTap的主要目的之一,例如用于记录日志或审计等非功能性操作,在不影响主线程的情况下在外部线程中执行。
它们的区别在于:
WireTap是“单向叉”,消息会以与主线程并行的不同线程发送到被监听的端点,无法从中获取响应并返回到主线程。
此外,还可以将除主体、标头等之外的其他内容发送到被监听的端点。
使用多播后,可以在并行或顺序处理后的主线程中“分裂再聚合”结果。
此外,可以多播任意数量的端点,而WireTap只能有一个端点可供发送。
在旧版且已弃用的多播路由器中,这是同步进行的,这意味着主流程必须等待所有路由的执行时间总和。
在3.5中引入了一种新的多播路由器,它可以并行地执行相同的操作,使主流程只需等待最慢的路由即可。