【问题标题】:Apache Camel: do Processors and Beans serve the same purpose?Apache Camel:处理器和 Bean 的用途相同吗?
【发布时间】:2011-08-29 01:00:54
【问题描述】:

看起来两者的目的相同。有什么区别可以使一个在某些情况下有用而不是另一个?

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    实际上,它们非常相似,但处理器比 Bean 更受限制。我通常将处理器用于仅与 Exchange 交互的简单用例。此外,inline processors 是一种无需创建单独的类即可进行交互的好方法。

    Beans 提供了更大的灵活性,并且还支持真正的 POJO 方法。这使您可以更轻松地与现有 API 集成(只需将输入/输出转换为匹配等)。

    在 Camel 路由/EIP 集成方面,Beans 还提供了出色的功能/灵活性,包括...

    【讨论】:

      【解决方案2】:

      我会说,归结为偏好问题。我通常选择 POJO 方法,因此我开始使用 bean 进行处理,但随着时间的推移,我慢慢转向使用处理器。

      我在以下情况下感到疼痛:

      • 具有多个参数的 Bean 方法
      • 试图从交换参数/消息头中获取数据

      我知道 Camel 2.8 通过允许 annotations in your bean 消除这些情况的一些痛苦,它指导 Camel 如何调用您的 bean 的方法。我不想走这条路——将 Camel 注释放入一个不应该关心它被 Camel 调用的 bean 中感觉不对。

      最后,我们创建了一个无注释、与客户端无关的 bean 和一个非常瘦的处理器,它从骆驼中提取所需的一切并将其传递给该 bean。

      只要我的 2 美分 - bean 路线确实不错 - 它也可以完成这项工作(尤其是 2.8)

      编辑

      自编写以来,camel 使用 POJO 处理消息已进行了许多改进 - 此答案可能不再适用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-26
        • 2018-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多