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

前言

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

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

解读 Camel

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

Camel is an Open Source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data.

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

对于定义,我们有两点疑惑! 1. 什么是企业集成模式,它对Camel意味着什么? 2. 为什么Camel能在多种不同技术栈系统之间游刃有余呢?

企业集成模式(EIPs)

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

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

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

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

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

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

组件

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

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

部分核心组件

部分非核心组件

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

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

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

全部核心概念

上面两个小章节其实就讲到了Camel 的两个核心概念 - EIP,处理消息 - Components,接受和发送消息(Endpoint)

除了上面提到的两个,还有两个核心,包括 - Route ,即定义数据从那儿来,到哪儿去 - Camel Context,是一个引擎(也可看做容器或者小型的应用服务器),用于运行和管理Route

对于Route 它是开发者在Camel中配置的对象,将数据从A点移动到B点,下面的代码是用Java语法表示将文件从一个文件夹移动到另外一个文件夹。 Java from("file:root/customers/new") .to("file:root/customers/old");

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

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

总结

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

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

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


本文对Apache Camel 做了一个很浅显的介绍,留下一个问题,Apache Camel 和MuleSoft ESB 企业服务总线有什么区别呢?欢迎留言下评论。

接下来的文章将关注于实现原理和实践,继续挖掘Camel的强大之处。

我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿。

Apache Camel 了解一下?相关推荐

  1. Apache Camel 2.15.0 发布,Java 规则引擎

    Apache Camel 2.15.0 发布啦!!!该版本经过 6 个月开发,修复了超过 500 个 bug.但最值得关注的是给我们带来的新特性: 自文档 目录组件 Camel 工具类目录 重用 Ca ...

  2. Apache Camel框架入门示例

    2019独角兽企业重金招聘Python工程师标准>>> Apache Camel是Apache基金会下的一个开源项目,它是一个基于规则路由和中介引擎,提供企业集成模式的Java对象的 ...

  3. 关于apache camel的消息转发效率

    公司使用activemq和camel做消息的分发,之前数据量不是很大,所以一直没怎么考虑效率问题,对camel的工作原理研究也不深.单是最近随着业务量的增加,camel的效率逐渐成了瓶颈,所以根据日志 ...

  4. apache camel 的 split 和 aggregate

    2019独角兽企业重金招聘Python工程师标准>>> split和aggregate,看图就明白了. 下面我用一个例子来说明,非常难得,你很难在网上找到apache camel这样 ...

  5. java camel dsl,Apache Camel与Spring DSL

    我正在尝试使用spring DSL在Apache Camel中运行一个简单的应用程序 . 这是我的spring-config.xml 这是我的Java类测试: public class CamelSp ...

  6. Apache Camel简介与入门

    Apache Camel 是一个基于知名的企业应用模式(Enterprise Integration Patterns)多功能的整合框架. StackOverflow上有很多学习Apache Came ...

  7. Apache Camel:基于企业集成模式(EIP)的开源集成框架

    本资源由 伯乐在线 - 唐尤华 整理 Apache Camel 是一个功能强大的开源集成框架,基于企业集成模式(EIP)提供了强大的Bean集成功能. 介绍 通过Camel可以用企业集成模式创建路由和 ...

  8. 简化软件集成:一个Apache Camel教程

    本文来自于阮一峰,文章主要讲解了构建的流程,每个步骤介绍的较为详细,希望对大家有帮助. 软件很少(如果有的话)存在于信息真空中.至少,这是我们软件工程师可以为我们开发的大多数应用程序做出的假设. 在任 ...

  9. Apache Camel框架之事务控制

    http://blog.csdn.net/kkdelta/article/details/7249122 本文简单介绍一下Apache Camel如何对route进行事务控制,首先介绍整个route只 ...

  10. Apache Camel Test Framework(MOCK)

    http://jnn.iteye.com/blog/1327693 先说点题外话 :上周五我和几个朋友交流的时候我发现大家很少写测试,分析原因一个可能是大家认为程序还不复杂,我写测试的回报不高,还有一 ...

最新文章

  1. JDK8中好用的日期处理-LocalDate类-LocalTime-LocalDateTIme,mysql解决时区相差13小时的问题,日期格式器DateTimeFormatter
  2. js立即调用的函数表达式
  3. Docker小白到实战之Docker Compose在手,一键足矣
  4. Android4.0的Alertdialog对话框,设置点击其他位置不消失
  5. java spring server_Java server框架之(1):spring中的IoC
  6. SpringCloud学习笔记003---服务提供者和服务消费者
  7. Android内存优化11 内存泄漏常见情况2 线程持久化
  8. erlang之三种socket消息循环
  9. Mysql Sql语句令某字段值等于原值加上一个字符串
  10. HTTP Header 详解【转】
  11. 6.pragma pack
  12. 搞懂Vision Transformer 原理和代码,看这篇技术综述就够了(三)
  13. linux 实时查看日志 最新最后100行 tail
  14. OSChina 周四乱弹 —— 你从小继承了程序员基因
  15. Python新手入门第一步:什么是 IDE?IDE 有什么用?
  16. html 实现动态在线预览word、excel、pdf等文件(方便快捷)
  17. 首位华人女数学家获拉马努金奖!北大数院校友,陶哲轩恽之玮曾得过此奖
  18. 羊皮卷之五:假如今天是我生命中的最后一天
  19. Android【Socket通讯】
  20. 禁闭岛 -- 看电影

热门文章

  1. IOS微信浏览器返回事件popstate监听
  2. leetcode38 count and say
  3. 如何自动生成论文目录
  4. 苹果手机进水屏幕乱跳怎么办
  5. 您的连接不是私密连接的解决办法
  6. 计算机技术在美术方面的应用,计算机技术在图形图像处理中的应用
  7. php虚拟电话号码,虚拟号码能挡住骚扰电话垃圾短信?
  8. LANDSAT8 LEVEL2 COLLECTION2如何在ENVI中正确打开
  9. 58同城python_Python实战计划爬虫作业第一周作业:爬58同城
  10. h5py is running against HDF5 1.10.5 when it was built against 1.10.4