`

Apache Camel开源项目简介

阅读更多
Apache Camel 是一个非常优秀的开源项目,这是一个非常强大的基于规则的路由以及媒介引擎,该引擎提供了一个基于POJO的 企业应用模式(Enterprise Integration Patterns)的实现,你可以采用其异常强大且十分易用的API 来配置其路由或者中介的规则。

Apache Camel 采用URI来描述各种组件,这样你可以很方便地与各种传输或者消息模块进行交互,其中包含的模块有  HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF Bus API。 这些模块是采用可插拔的方式进行工作的。Apache Camel的核心十分小巧你可以很容易地将其集成在各种Java应用中。

jnn (Willem Jiang,姜宁) 是Apache Camel项目主要维护者之一,他是一位非常优秀的开源项目开发者和支持者 ,jnn 博客:http://jnn.iteye.com/


1.Apache Camel项目的特点,使用的范围,和同类项目比如Mule相比较的优势?
jnn:对于企业应用来说,由于历史或者多厂商等原因造成了其系统之间的通讯协议多样化,而由于企业业务发展,这些应用系统之间交互需求日益增多。Apache Camel可以帮助大家通过定义简单的路由规则来实现不同企业应用之间的互联互通。Apache Camel 把不同的企业应用抽象成为Endpoint, 通过URI来对这些Endpoint 进行描述,由于Apache Camel提供了一个基于POJO的企业应用模式(Enterprise Integration Patterns)的实现,同时Camel提供了60多个组件来负责具体的传输协 议,这样用户可以通过简单的消息路由规则定义,就可以实现各应用系统之间交互。

简单来说如果你有一个应用只提供一个JMS接口, 而你的另一个应用提供 WebServices接口,那你的路由规则可以这么定义:
from("jms://xxxx").to("cxf://xxxx)
【注】Camel通过CXF提供了对WebService的支持。
当然你有可能需要对JMS接口过来的消息做一些处理在转发给WebService应用。
那你只需在两个节点之间要加入一个processor来实现你需要做的处理就行了
from("jms://xxxx").processor(new MyProcessor()).to("cxf://xxxx")

由上面的例子可以看到Camel的路由规则很直观简单,你可以像写Java代码一样定义路由规则。这得益于Camel的创建者 James Strachan(他也是Groovy的创建者)的贡献。 [/u]

当然Camel还提供了其他方式来描述路由规则, 例如Spring 配置文件, Scala等。

目前市面上有不少的同类开源产品, 例如 Spring Integration, Mule等。

[u]Camel与他们相比有最大的不同就是它十分小巧,而且不会让程序员失去对代码的控制。你可以把它当作一个小的应用库,而不是一个大的运行容器。 这样你可以很轻松 地将其集成到你的Web容器,JBI容器, 或者OSGi容器中。你可以像写Java代码到方式编辑你的路由规则,IDE可以取保你在短时间写出正确 的规则。


还有Camel和Apache ActiveMQ,CXF,ServiceMix有很好的集成,而这些项目都是 企业应用开发经常会接触到的。

2.Apache Camel的支持组件,以及开源产品和Fuse这样商业产品之间的区别?
Camel 支持的组件有ActiveMQ,AMQP,Atom,Bean,Browse,Cometd,CXF 等,所有详细支持的组件请看这个页面: http://camel.apache.org/components.html,这里面还有一些Camel基本概念的介绍 http://jnn.iteye.com/category/27938。我简单给你说一下开源产品和Fuse这样商业产品两者的区别吧:开源软件如果出现问题了,很难得到及时的修正, 因为你很难去推动开发人员去完成你的需求,如果是商业产品, 有一个契约关系, 这样可以保证你的问题能够及时被修正。还有商业产品有一整套的测试发布管理机制,来保证产品质量。 而且我们的Fuse套件是集成了Apache Servicemix, ActiveMQ, CXF , Camel, 它们之间的版本关系是一致的。 而且目前Fuse套件会每个月做一次Release, 比起apache 的release要快很多。还有就是Fuse套件在Apache项目之上还提供了一些扩展的支持, 例如Fuse MR就提供了支持一些商业产品的支持,例如MS Queue, Progress Actiional 等。有Fuse套件本身也是开源的,只是使用的软件许可和Apache的软件许可不同。Apache的软件许可允许你将Apache软件打包到你的商业产品中,你不需要为此付任何费用。Fuse套件不允许你将Fuse套件打包到你的商业产品中, 当然这是出于保护商业利益的角度上来说的。目前Fuse的测试是运行在6个操作系统平台上, 除了包含常规的Unit test, 和Integration Test, 还包含CPI test。这是一般开源软件项目不具备的。还有Fuse套件有专门的CS 支持队伍。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics