了解何时使用Apache Camel的指南

时间:2014-06-18 00:12:41

标签: apache-camel

我正逐渐熟悉Camel,但是我很难理解应该考虑的粒度级别。是否应该仅在将消息从一个应用程序传递到另一个应用程序时使用Camel,或者使用Camel在单个应用程序中的组件和/或层之间传递消息也是合适的?

例如,我要求公开接受预订的Web服务,验证它们并将它们写入队列。您是否会建议在这种情况下使用驼峰,或者它是否真的取决于我希望我的解决方案允许的灵活程度。

换句话说,如果我被要求将预订保存到数据库,我将永远不会考虑骆驼,而只是将其构建为传统应用程序,调用DAL来保存预订。当然我可以使用camel-ibatis来插入数据,但是在这种情况下使用驼峰似乎有点过头了。

感谢您对此提出的任何建议。

3 个答案:

答案 0 :(得分:0)

正如你明显怀疑的那样,这有些灰色。您需要灵活性越多,使用Camel就会获得越多的好处。

就在上周,我构建了一个应用程序的原型,需要接受HTTP帖子,将数据放入队列,然后从队列中提取消息并使用它们来更新Mongo数据库。

最初,我使用Camel,效果很好。然后,删除了对HTTP POST的要求(它变得只消耗来自队列的消息并更新数据库),并且数据库更新变得比通过简单的基于字符串的camel mongo端点规范容易支持的更复杂,所以我伤口取消了骆驼,并用jms连接器和Mongo api重写了它。

所以,像往常一样,这取决于。我想说,如果您只是在两个端点之间移动数据,并且没有基于内容的决策或路由,那么您可能无法从使用Camel中受益。一旦你真的想要使用一个或多个Enterprise Integration Patterns,那么Camel将是一个好处。

答案 1 :(得分:0)

由于camel有很多组件,看起来它可以做任何事情。但是如果你可以直接使用第三方库并且没有很多可以利用Enterprise Integration Patterns的业务逻辑,那么有时可能会更直接。

Camel的真正好处是您可以专注于如何路由您的消息以满足您的业务逻辑需求,而无需关心组件的实现细节。

答案 2 :(得分:0)

如建议的那样,没有严格的规则......这是我的看法

使用Camel简化技术挑战

将Camel用于这些类型的要求

  • 基于事件的高级流程(EIPs
  • 将多个接口暴露给商业逻辑(http,文件,jms等)
  • 复杂的运行时管理需求(生命周期,策略)
那说......

  • 不仅仅用于一个简单的用例
  • 不会增加不必要的复杂性
  • 有法定数量的用例/理由/理由使用它

沿着这些方向,我在ApacheCon上展示了以下内容,重点介绍了为什么/如何使用Camel:

http://www.consulting-notes.com/2014/06/apachecon-2014-presentation-apache.html