协慌网

登录 贡献 社区

Apache Camel 究竟是什么?

我不明白Camel到底是做什么的。

如果你能用 101 个单词介绍骆驼:

  • 究竟是什么?
  • 它如何与用 Java 编写的应用程序交互?
  • 它与服务器一起出现了什么?
  • 这是一个独立的计划吗?

请解释一下 Camel 是什么。

答案

我想以更容易理解的方式描述这个......

为了理解 Apache Camel 是什么,您需要了解企业集成模式是什么。

让我们从我们可能已经知道的东西开始:Singleton 模式,Factory 模式等; 它们只是组织解决问题的方法,但它们本身并不是解决方案。当他们出版他们的书 “ 设计模式”时,四人帮分析并提取了这些模式 。他们在思考如何最好地构建代码方面为我们付出了巨大的努力。

与 Gang of Four 一样,Gregor Hohpe 和 Bobby Woolf 撰写了企业集成模式 (EIP)一书,其中他们提出并记录了一套新的模式和蓝图,以便我们如何最好地设计基于组件的大型系统,其中组件可以是在相同的进程或不同的机器上运行。

他们基本上建议我们将我们的系统构建为面向消息的 - 组件使用消息作为输入和输出彼此通信,而绝对没有别的。它们向我们展示了一整套模式,我们可以从中选择并在我们的不同组件中实现这些模式,这些组件将共同构成整个系统。

那么什么是 Apache Camel?

Apache Camel 为您提供 EIP 接口,基础对象,常用实现,调试工具,配置系统以及许多其他帮助程序,当您希望实施解决方案以遵循 EIP 时,这将为您节省大量时间。

以 MVC 为例。 MVC 在理论上非常简单,我们可以在没有任何框架帮助的情况下实现它。但是,良好的 MVC 框架为我们提供了随时可用的结构,并且在创建大型 MVC 项目时考虑了所需的所有其他 “侧面” 事项,这就是我们在大多数时间使用它们的原因。

这正是 Apache Camel 对 EIP 的看法。 对于想要实施其解决方案以遵循 EIP 的人来说,这是一个完整的生产就绪框架。

创建项目描述不应该很复杂。

我说:

Apache Camel 是具有路由功能的消息传递技术。它将消息传递开始和结束点连接在一起,允许将来自不同源的消息传输到不同的目的地。例如:JMS - > JSON,HTTP - > JMS 或漏斗 FTP - > JMS,HTTP - > JMS,JSON - > JMS

维基百科说:

Apache Camel 是一个基于规则的路由和中介引擎,它使用 API(或声明性 Java 域特定语言)提供基于 Java 对象的企业集成模式实现,以配置路由和中介规则。特定于域的语言意味着 Apache Camel 可以使用常规 Java 代码在 IDE 中支持类型安全的智能完成路由规则,而无需大量的 XML 配置文件; 虽然 Spring 中的 XML 配置也受支持。

看到?那不是很难吗?

如果您有 5 到 10 分钟,我通常建议人们阅读 Jonathan Anstey 与 Apache Camel的这种集成 。这是一篇写得很好的文章,简要介绍了 Camel 的一些概念并对其进行了概述,并实现了一个带有代码示例的用例。在其中,乔纳森写道:

Apache Camel 是一个开源 Java 框架,专注于使开发人员更容易集成和访问。它通过以下方式实现:

  • 所有广泛使用的企业集成模式 (EIP)的具体实现
  • 连接各种传输和 API
  • 易于使用的域特定语言(DSL)将 EIP 和传输连接在一起

Camel in Action 中还有一个免费的章节,在第一章中介绍了 Camel。乔纳森和我一起是那本书的合着者。