【发布时间】:2011-08-29 01:00:54
【问题描述】:
看起来两者的目的相同。有什么区别可以使一个在某些情况下有用而不是另一个?
【问题讨论】:
标签: apache-camel
看起来两者的目的相同。有什么区别可以使一个在某些情况下有用而不是另一个?
【问题讨论】:
标签: apache-camel
实际上,它们非常相似,但处理器比 Bean 更受限制。我通常将处理器用于仅与 Exchange 交互的简单用例。此外,inline processors 是一种无需创建单独的类即可进行交互的好方法。
Beans 提供了更大的灵活性,并且还支持真正的 POJO 方法。这使您可以更轻松地与现有 API 集成(只需将输入/输出转换为匹配等)。
在 Camel 路由/EIP 集成方面,Beans 还提供了出色的功能/灵活性,包括...
丰富的bindings 集,可让您快速将 Exchange 中的数据绑定到 bean 方法的属性等。
used as expressions/predicates(用于 POJO EIP 实现...过滤器等)
【讨论】:
我会说,归结为偏好问题。我通常选择 POJO 方法,因此我开始使用 bean 进行处理,但随着时间的推移,我慢慢转向使用处理器。
我在以下情况下感到疼痛:
我知道 Camel 2.8 通过允许 annotations in your bean 消除这些情况的一些痛苦,它指导 Camel 如何调用您的 bean 的方法。我不想走这条路——将 Camel 注释放入一个不应该关心它被 Camel 调用的 bean 中感觉不对。
最后,我们创建了一个无注释、与客户端无关的 bean 和一个非常瘦的处理器,它从骆驼中提取所需的一切并将其传递给该 bean。
只要我的 2 美分 - bean 路线确实不错 - 它也可以完成这项工作(尤其是 2.8)
编辑
自编写以来,camel 使用 POJO 处理消息已进行了许多改进 - 此答案可能不再适用。
【讨论】: