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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

        @Srikanth -

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

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

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

        区别在于:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2015-03-21
          • 2017-08-31
          • 2023-03-06
          • 1970-01-01
          • 2018-02-14
          • 1970-01-01
          • 2012-05-04
          • 2015-08-28
          • 2016-06-23
          相关资源
          最近更新 更多