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 有啥区别?