Apache Camel:处理器和Bean是否有同样的目的?

时间:2011-05-19 16:30:35

标签: apache-camel

似乎两者都有同样的目的。是否有任何差异使得某些情况在某些情况下有用而不是在另一种情况下?

2 个答案:

答案 0 :(得分:27)

在实践中,它们非常相似,但处理器比Bean更受限制。我通常使用处理器来处理与Exchange交互的简单用例。此外,inline processors是一种很好的交互方式,无需创建单独的类。

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

Beans还提供有关Camel路由/ EIP集成的强大功能/灵活性,包括......

答案 1 :(得分:11)

归结为优先考虑,我会说。我通常选择POJO方法,所以我开始使用bean来处理,但随着时间的推移,我慢慢转向使用处理器。

在以下情况下我感到很痛苦:

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

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

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

仅仅是我的2美分 - 豆子路线真的不错 - 它也会做同样的工作(尤其是2.8)

修改

自从写了以来,已经对骆驼使用POJO处理消息进行了许多改进 - 这个答案可能不再适用。