Apache camel ApacheCamel:处理器和bean是否有相同的用途?

Apache camel ApacheCamel:处理器和bean是否有相同的用途?,apache-camel,Apache Camel,似乎两者都有相同的目的。在某些情况下,有什么区别使一个有用而另一个不有用?实际上,它们非常相似,但处理器比Bean更有限。我通常将处理器用于与Exchange交互的简单用例。另外,它们是一种很好的交互方式,无需创建单独的类 bean提供了更大的灵活性,还支持真正的POJO方法。这使您能够更轻松地与现有API集成(只需将输入/输出转换为匹配等) Bean还为驼峰路由/EIP集成提供了强大的功能/灵活性,包括 丰富的属性集允许您快速地将来自交换的数据绑定到bean方法的属性,等等 POJO/允许您

似乎两者都有相同的目的。在某些情况下,有什么区别使一个有用而另一个不有用?

实际上,它们非常相似,但处理器比Bean更有限。我通常将处理器用于与Exchange交互的简单用例。另外,它们是一种很好的交互方式,无需创建单独的类

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

Bean还为驼峰路由/EIP集成提供了强大的功能/灵活性,包括

  • 丰富的属性集允许您快速地将来自交换的数据绑定到bean方法的属性,等等

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

  • (用于POJO EIP实现…过滤器等)


我想说,归根结底是偏好的问题。我通常选择POJO方法,因此我开始使用bean来进行处理,但随着时间的推移,我逐渐转向使用处理器

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

  • 具有多个参数的Bean方法
  • 试图从exchange参数/消息头中获取数据
我知道camel2.8通过让Camel知道如何调用bean的方法,消除了这些情况的一些痛苦。我不想走这条路——把Camel注释放进一个bean中,而这个bean不关心Camel调用它,这是错误的

最后,我们创建了一个无注释、客户机不可知的bean和一个非常瘦的处理器,它从camel获取它所需的一切并将其传递给该bean

就我的2美分-bean路线真的不错-它也能很好地完成任务(特别是在2.8中)

编辑

自本文编写以来,camel使用POJO处理消息的方法已经有了很多改进——这个答案可能不再适用