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

red*_*ben 38 apache-camel

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

Ben*_*Day 30

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

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

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

  • 丰富的绑定集,允许您快速将数据从Exchange绑定到bean方法的属性等.

  • POJO 消耗/生成允许您以可重用的方式与端点交互

  • 用作表达式/谓词(用于POJO EIP实现...过滤器等)


Roy*_*ove 11

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

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

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

我知道Camel 2.8通过允许bean中的注释引导Camel如何调用bean的方法来解决这些案例的一些痛苦.我不想走这条路 - 把Camel注释放到一个不应该关心它被Camel调用的bean中感觉不对.

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

仅仅是我的2美分 - 豆子路线真的不错 - 它也能完成这项工作(尤其是2.8)

编辑

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