合聚咖

合聚咖

Apache Camel 了解一下

admin

何为 Apache Camel ?从本质上来说,Apache Camel 是 Java 的三方集成库。从使用者角度来说,它是一种语言,一组JavaAPI和一大堆组件,以便在不同计算机系统之间集成和处理数据。

从我的角度来看,Apache Camel就像胶水,作为Java的粘合剂,将不同的程序服务连接在一起。

Apache Camel 是一个基于 企业应用集成模式 (EIP)的强大开源集成框架。官方对Camel的核心定义如下。

大概的意思是说,Camel 是一个开源的(企业应用)集成框架,它能够快速、轻松地集成,用于在各种系统之间消费或生产数据。

对于定义,我们有两点疑惑!

谈到企业集成模式,那要先讲讲什么是企业集成?

企业应用大多是构建在不同的技术栈上,那么企业之间不同技术栈的应用系统如何协同工作呢,那便是用到中间件,那中间件互相如何畅快的交流,让使用者无法感知中间件的存在呢?即如何屏蔽中间件?那便是在中间件之间放置一个中间件,即 企业集成

说完企业集成,那么什么是企业集成模式(Enterprise Integration Patterns)呢?它是一本书《 企业集成模式 》,著于Gregor Hohpe 和 Bobby Woolf,其描述了企业应用集成的65种模式,并以模式语言的形式给出了面向消息的中间件。

Camel支持《企业集成模式》大部分企业集成模式,见官方文档。

支持的模式主要包括几个分类

从中挑选几个常见的模式瞧瞧

之所以Camel能在多种技术栈的系统之间快速集成,打通信息流,那是因为其拥有一个丰富的组件库,包含超过320个组件(核心和非核心的组件)。组件就像一个插头,允许系统连接到外部系统,比如邮箱、磁盘、FTP服务等等。

这样通过组件可用于解决简单的消息传递和数据传输问题,而且还可以提供数据安全性,不需要开发者在系统架构的基础设施层反复地造轮子。

部分核心组件

部分非核心组件

关于组件的介绍请查看官方介绍camel components。

从我的角度来看,我们可以把组件视为创建断点的工厂。每当你需要将数据流入或流程时,你可以在组件库中找到合适的组件来执行这项工作,仅仅只需要两步,找组件,并使用它。

而且你可以放心大胆地使用组件,一是这已经通过社区千锤百炼地测试过了;二是它是开源的,符合商业合规使用的。如果可以,甚至你可以共享自己的组件。

上面两个小章节其实就讲到了Camel 的两个核心概念

除了上面提到的两个,还有两个核心,包括

对于Route 它是开发者在Camel中配置的对象,将数据从A点移动到B点,下面的代码是用Java语法表示将文件从一个文件夹移动到另外一个文件夹。

对于Camel Context 它是一个上下文容器,当Camel启动时,首先读取Route定义,然后创建Route,并讲路由添加到Camel Context里,然后启动Context。

当服务Camel终止时,Route将会被关闭,然后Camel 的上下文也会关闭。

官方文档指出,Camel可以处理几乎所有的事情,包括从Http通信、磁盘读取、与Twitter、Facebook 等应用程序交流、与AWS、Azure等云服务提供商通信、与消息中间件交互等等,应有尽有。

Apache Camel 中间件的核心观点是把更多的时间放在对你企业有意义的代码上,Camel使得以有效的方式连接上百多个不同的异构服务端点变得简单和可扩展。它的组件驱动方法着重于在编写集成逻辑时减少模板代码。

总的来说,可以把Camel类比成一条管道,承接上游,内部处理后输送到下游,内部处理过程中,可以做比如更改、转换数据,或者传输到另一个管道等等。