Camel是一个集成框架,旨在使您的集成项目富有成效和乐趣。Camel项目开始于2007年初,现在是一个成熟的开放源码项目,在自由的apache2许可证下可用,拥有强大的社区。
Camel的重点是简化集成。我们相信,当您读完这些页面时,您将欣赏Camel并将其添加到您的必备工具列表中。
这个Apache项目之所以被命名为Camel,是因为它的名字很短而且容易记住。据传这个名字的灵感可能来自创始人之一曾经抽过的骆驼烟。在Camel网站上,一个常见问题条目(http://camel.apache.org/why-the-name-camel.html)列出了该名称由来的原因。
1.1.1 What is Camel?
Camel框架的核心是一个路由引擎,或者更准确地说,是一个路由引擎生成器。它允许您定义自己的路由规则,决定从哪些源接收消息,以及决定如何处理这些消息并将其发送到其他目的地。Camel使用一种集成语言,允许您定义类似于业务流程的复杂路由规则。如图1.1所示,Camel形成了不同系统之间的粘合剂。
Camel的一个基本原则是,它对需要处理的数据类型不作任何假设。这一点很重要,因为它为开发人员提供了集成任何类型系统的机会,而无需将数据转换为规范格式。
c01_01.pngCamel提供了更高层次的抽象,允许您通过使用相同的API与不同的系统进行交互,而不考虑系统使用的协议或数据类型。Camel中的组件提供了针对不同协议和数据类型的API的特定实现。开箱即用的Camel支持280多种协议和数据类型。它的可扩展和模块化体系结构允许您实现并无缝插入对您自己的协议的支持,无论是专有的还是非专有的。这些架构选择消除了不必要的转换,使Camel不仅更快,而且更精简。因此,它适合嵌入到其他需要Camel丰富处理能力的项目中。其他开源项目,如apache servicemix、Karaf和ActiveMQ,已经使用Camel作为实现集成的一种方式。
我们还应该提到Camel不是什么,Camel不是企业服务总线(enterpriseservicebus,ESB),尽管有些人称Camel为轻量级ESB,因为它支持路由、转换、编排、监视等。Camel没有容器或可靠的消息总线,但是它可以部署在一个容器或消息总线中,比如前面提到的apache servicemix。因此,我们更喜欢将Camel称为集成框架,而不是ESB。
如果一提到esb就让人想起了庞大而复杂的部署,那么不要害怕。Camel在微服务或物联网(IoT)网关等小型部署中也同样如鱼得水。
为了理解Camel是什么,让我们看看它的主要特性。
为什么使用骆驼?
Camel在集成空间中引入了一些新颖的想法,这也是作者决定首先创建Camel的原因。我们将在整本书中探索丰富的Camel特性,但Camel背后的主要思想是:
-
Routing and mediation engine
-
Extensive component library
-
Enterprise integration patterns (EIPs)
-
Domain-specific language (DSL)
-
Payload-agnostic router
-
Modular and pluggable architecture
-
Plain Old Java Object (POJO) model
-
Easy configuration
-
Automatic type converters
-
Lightweight core ideal for microservices
-
Cloud ready
-
Test kit
-
Vibrant community
网友评论