Apache Camel:处理器和豆类服务于同一目的吗?

问题描述:

这似乎是两个服务相同的目的。有没有什么区别可以使某个人在某些情况下有用,而不是另一个?Apache Camel:处理器和豆类服务于同一目的吗?

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

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

豆类还提供了强大的功能/灵活性关于骆驼路由/ EIP集成,包括...

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

我感觉在下列情况下疼痛:

  • 豆与多个参数的方法
  • 试图取出数据交换则params的/邮件头

我知道Camel 2.8通过允许指导Camel如何调用你的bean的方法的annotations in your bean来消除这些情况的一些痛苦。我不想走这条路 - 将骆驼注释放入不应该被Camel调用的bean的错误。

最后,我们创建了一个无注释的客户端无关bean和一个非常薄的Processor,它将所需的所有东西从camel中提取出来并传递给该bean。

只是我的2美分 - 豆路线确实是个不坏的 - 它会做的工作一样好(2.8)

编辑

许多方面做了改进骆驼使用POJO来处理消息,因为这是写的 - 这个答案可能不再适用。