Apache Camel:处理器和豆类服务于同一目的吗?
答
实际上,它们非常相似,但是处理器比Bean更有限。我通常使用处理器来处理与Exchange交互的简单用例。另外,inline processors是一种很好的交互方式,无需创建单独的类。
豆提供更多的灵活性,也支持真正的POJO方法。这使您可以更轻松地与现有API集成(只需将输入/输出转换为匹配等)。
豆类还提供了强大的功能/灵活性关于骆驼路由/ EIP集成,包括...
丰富的bindings,让您快速绑定从Exchange数据到Bean属性方法等
used as expressions/predicates(POJO为EIP的实施......过滤器等)
答
归结起来喜好的问题,我会说。我通常选择POJO方法,因此我开始使用bean来处理,但随着时间的推移,我慢慢转向使用处理器。
我感觉在下列情况下疼痛:
- 豆与多个参数的方法
- 试图取出数据交换则params的/邮件头
我知道Camel 2.8通过允许指导Camel如何调用你的bean的方法的annotations in your bean来消除这些情况的一些痛苦。我不想走这条路 - 将骆驼注释放入不应该被Camel调用的bean的错误。
最后,我们创建了一个无注释的客户端无关bean和一个非常薄的Processor,它将所需的所有东西从camel中提取出来并传递给该bean。
只是我的2美分 - 豆路线确实是个不坏的 - 它会做的工作一样好(2.8)
编辑
许多方面做了改进骆驼使用POJO来处理消息,因为这是写的 - 这个答案可能不再适用。