Apache Camel中的窃听和多播有啥区别

Posted

技术标签:

【中文标题】Apache Camel中的窃听和多播有啥区别【英文标题】:What is the difference bewteen wiretap and multicast in Apache CamelApache Camel中的窃听和多播有什么区别 【发布时间】:2017-05-19 20:34:05 【问题描述】:

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

【问题讨论】:

【参考方案1】:

组播:组播 EIP 允许并发发送同一消息的副本到多个 收件人。

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

我不认为你可以通过使用wireTap并行发送消息给多个收件人来实现并发。

【讨论】:

【参考方案2】:

wireTap 组件仅将消息发送到一个路由,而主流程继续。

多播路由器通过多个路由发送消息,并等待所有路由继续,然后主流才能继续下一个消息处理器。

在旧的和已弃用的多播路由器的情况下,这是同步发生的,这意味着主流必须等待所有路由执行时间的总和。

在 3.5 中引入了一个称为新的多播路由器,它做同样的事情但并行,使主要流只用于最慢的路由。

【讨论】:

【参考方案3】:

@Srikanth -

我不认为你可以使用wireTap实现并发

这并不完全正确。 WireTap 以及具有并行处理的多播将具有并发性。

这是WireTap的主要用途。例如,在主线程之外进行日志记录或审计,以免因非功能性操作而减慢主线程。

区别在于:

WireTap 是“单向分叉”。消息进入与主线程并行的不同线程中的窃听端点,并且无法从主线程获取响应。

也可以发送到除主体、标头等之外的窃听端点。

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

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

【讨论】:

以上是关于Apache Camel中的窃听和多播有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Apache Camel:Message Translator 和 Content Enricher with Example 有啥区别?

Apache camel 错误处理如何与多播和事务一起使用

异步编程和多线程有啥区别?

网络通信中组播和多播的联系,区别分别是啥?

在 Apache Camel 中的处理器之间传递值

即时通讯开发之详解TCP/IP中的广播和多播IGMP协议