浅尝Apache Camel

引:最近项目有一个需求就是定时将一台服务器的文件传到另一个服务器,一开始想的竟然想的是用http去下载,后来在万老师的指点下,采取用ftp服务器(源文件所在地)与ftp客户端(源文件去向)的形式来处理,自己小试了一下,还不错!

Apache Camel简介

Apache Camel是Apache基金会下的一个开源项目,它是一个基于规则路由和处理的引擎,提供企业集成模式的Java对象的实现,通过应用程序接口 或称为陈述式的Java领域特定语言(DSL)来配置路由和处理的规则。其核心的思想就是从一个from源头得到数据,通过processor处理,再发到一个to目的的。

这个from和to可以是我们在项目集成中经常碰到的类型:一个FTP文件夹中的文件,一个MQ的queue(jms),一个HTTP request/response,一个webservice等等.

Apache Camel架构

架构图

其实理解起来很简单:始端》(过滤器+路由处理器)》终端

Apache Camel核心概念

  1. endpoint,所谓的endpoint,就是一种可以接收或发送数据的组件。可以支持多种协议,如jms,http,file等。

  2. processor,它是用来处理具体业务逻辑的组件。

  3. route,用来路由,指示数据从哪里来到哪里去,中间用哪个processor处理。

  4. exchange,processor之间用exchange对象来传送数据,有点像jms,通俗一点就像上学时传的小纸条,所以:exchange对象就是processor,endpoint所有camel组件之间传送数据的小纸条:)。

  5. filter,用来确定哪些东西可以传递,哪些东西不可以传递。

Apache Camel例子(以ftp为例)

老师指导的例子,是结合Springboot的,放在github上了。
ApacheCamleDemo

里面包括了动态路由和单路由的例子,稍微结合Springboot就可以理解并改成自己的代码。

什么时候用Apache Camel

参考网上的说法:camel就是企业信息集成框架,它提供了很多简单好用而又强大的组件,用户可以根据场景来选择不同的EIP(企业集成模式)来实现自己的需求,以响应快速变化的业务。可以把它当成企业信息总线(ESB)的轻量级实现。