设为首页 收藏本站
查看: 535|回复: 0

[经验分享] Apache Camel开源项目简介

[复制链接]

尚未签到

发表于 2017-1-1 06:02:12 | 显示全部楼层 |阅读模式
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的创建者)的贡献。

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

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

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 支持队伍。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322058-1-1.html 上篇帖子: Tomcat 和 Apache集群开始 下篇帖子: 基于 Apache 的服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表