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 支持队伍。
分享到:
相关推荐
camel-idea-plugin, Apache camel IntelliJ IDEA 插件 Apache camel IDEA插件 IntelliJ IDEA的插件,为代码编辑器提供一组 Apache camel 相关的功能。插件包括:Java,XML,属性或者yaml文件中驼峰终结点的代码完成...
camel, Apache camel 镜像 Apache camel 是基于已知企业集成模式的强大开放源代码集成框架,它具有强大的Bean集成。简介flex允许你创建企业集成模式,以基于基于Java的域特定语言( 或者 Fluent API ) 或者基于 Sc
Apache Camel Karaf支持 是基于已知的Enterprise Integration Patterns和功能强大的bean集成的功能强大的开源集成框架。 介绍 该项目为Apache Camel提供Karaf支持。
是一个功能强大的开源集成框架,基于流行的Enterprise Integration Patterns和功能强大的bean集成。 介绍 Camel支持创建Enterprise Integration Patterns,以通过基于Spring或Blueprint的Xml Configuration文件,...
阿帕奇骆驼 是一个强大的开源集成框架,基于流行的Enterprise Integration Patterns和功能强大的bean集成。 介绍 Camel支持创建Enterprise ... Apache Camel使用URI来实现与各种传输或消息传递模型(包括HTTP,Ac
Apache Camel是基于企业集成模式的功能强大的开源集成库。 可以在基于Java的DSL或XML中定义Camel路由引擎的规则。camel/apache-camel/3.7.2
该项目为Apache Camel提供Spring Boot支持。 创建/删除启动器 要为zoot组件创建启动器,请运行以下命令: ./starter-create zoot 同样,要删除zoot组件的启动器,请运行以下命令: ./starter-delete zoot
适用于Apache Camel的Clojure DSL动机Camel是一个开源集成框架,可让您快速轻松地集成使用或生成数据的各种系统。 该库在Java 上增加了一个薄层,并提供了在Clojure生态系统中使用Apache Camel的更惯用的体验,而...
Apache Camel是基于企业集成模式的功能强大的开源集成库。 可以在基于Java的DSL或XML中定义Camel路由引擎的规则。camel/camel-k-runtime/1.6.0
Camel是apache的一个顶级开源项目
Apache Camel是一个开源Java框架,专注于使开发人员更容易集成和访问。它通过以下方式实现: •所有广泛使用的EIP的具体实施 •连接各种传输和API •易于使用的域特定语言(DSL)将EIP和传输连接在一起
Apache Camel-示例示例 OCTO sur Apache Camel的代码源
导入的web项目JAVA源码报错Apache Camel IDEA 插件 Intellij IDEA 插件,为代码编辑器提供一组与 Apache Camel 相关的功能。 该插件包括: Java、XML、属性或 yaml 文件中 Camel 端点的代码完成( ctrl + space ) ...
保险丝 JBoss Fuse是一个开源ESB,在单个集成发行版中具有基于Apache Camel,Apache CXF,Apache ActiveMQ,Apache Karaf和Fabric8的功能。
Apache Camel是基于企业集成模式的功能强大的开源集成库。 可以在基于Java的DSL或XML中定义Camel路由引擎的规则。camel/camel-kafka-connector/0.6.1
Apache Camel是基于企业集成模式的功能强大的开源集成库。 可以在基于Java的DSL或XML中定义Camel路由引擎的规则。camel/apache-camel/3.7.3
wsdl2java源码“Jammazwan”是印地语“骆驼看守人”的意思,是 . 也是一个果酱 为什么不是官方骆驼示例? Jammazwan x__projects 涵盖比 更简单的问题,并且以更孤立的方式。 它们旨在快速学习 Camel 的一部分,而...