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

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

JavaEye的资深会员jnn (Willem Jiang,姜宁) 是Apache Camel项目主要维护者之一,他是一位非常优秀的开源项目开发者和支持者,JavaEye非常荣幸的采访了他。

jnn 博客:http://jnn.iteye.com/

Apache Camel  http://camel.apache.org/
FuseSource    http://fusesource.com/
CXF 中文邮件组  http://groups.google.com/group/cxf-zh?hl=zh-CN

欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,发站内短信给JavaEye管理员或者发信到webmaster@iteye.com,谢谢。

采访Apache Camel项目主要维护者之一 jnn Top

JavaEye:1.Hi,jnn,非常荣幸能够采访你,你可以介绍一下自己为什么要加入Apache Camel项目吗?

jnn:这个说起来有点话长,在加入Apache Camel之前, 我做有关Apache CXF的开发快一年的时间了。当时Camel需要和CXF进行集成,于是我就自告奋勇接受了这个任务,参与了Apache Camel的开发。(具体的过程可以参考我的一篇blog:
开源两事记)

JavaEye:2.能介绍一下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有很好的集成,而这些项目都是 企业应用开发经常会接触到的。

JavaEye:3.现在大概有多少用户使用Apache Camel项目。

jnn:这个问题比较难直接回答, 因为 Apache Camel是开源项目,大家可以在不通知我 们的情况下,直接使用, 所以我们没有直接的数据来回答这个问题。现在 camel.apache.org 每天有1~2K的独立IP访问,还有 Apache Camel 的邮件 列表的活跃程度很高,目前排在Apache项目中的第七位http://www.nabble.com/Apache-f90.html

JavaEye:4.Apache Camel 2.0 M3版本刚刚于7月25日发布,2.0正式最终版将在什么什么发布? 2.0版本相比之前的版本有哪些重大改进。

jnn:Apache的Release风格是没有一个具体的时间的, 如果开发者觉得差不多了,就可 以发布。 目前Camel 2.0的开发基本就绪,目前我们正在修复 2.0 M3发布之后发 现的bug,如果顺利的话,2.0版本应该在下个月就能发布了。

Camel2.0 和 Camel 1.x相比我们简化了API的设计,添加了很多新的组件,同时提 供了对OSGi的集成支持, 具体大家可以参考这个链接:http://camel.apache.org/camel-200-release.html

JavaEye:5.Apache Camel项目的roadmap是什么?近期远期的开发计划是什么?

jnn:Apache 项目开发是通过邮件来驱动的,我们没有项目经理来给我们指定具体的 roadmap。很多Feature都是在和用户的邮件讨论中形成的。目前我们规划的还是Camel 2.0部 分的内容http://camel.apache.org/camel-20-design.html,欢迎大家加入Camel需求讨论中来http://www.nabble.com/Camel---Users-f36428.htmlz

JavaEye:6.能否请你介绍一下Apache Camel的支持组件,以及开源产品和Fuse这样商业产品之间的区别吗?

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

JavaEye:7.请问,你加入Apache Camel项目大概有多长时间了?你主要负责哪部分的开发?

jnn:我是在2007年7月的时候加入 Apache Camel项目开发的, 到现在也有2年的时间了。Apache开源项目的开发比较松散,你可以选择你自己感兴趣的内容工作,很难说哪块代码是由你负责开发的(谁都可以过来修改你的代码  ), 就目前的情况来 说 camel-cxf,camel-osgi 组件的开发和维护的主要工作由我来完成。

JavaEye:8.请问,你平均一周花多长时间在apache camel项目上?你觉得参与这个项目,最大的收获是什么?

jnn:由于我是全职做Apache Camel商业版本的Fuse MR的开发,所以基本上每周要花 20~30小时做与Apache Camel相关的工作,其他时间,我有可能会去做与Fuse相关 的开发支持工作。

参与这个项目的最大收获就是接触到了世界级的开发者,打开了我的眼界,当然也从他们身上学到了不少的东西。

JavaEye:9.你对国内的开发人员参与开源项目的现状有什么评价?你能对希望加入国际开源项目的开发者提一些建议吗?

jnn:去年年底的时候,我参加过Apache在北京组织的一次meet up,就Apache项目的参 与者来说在中国的开发者很少,好像只有我们之外就是Intel参与的Harmony项目的 成员。我曾经写过一篇blog提到国内的开源现状我觉得如果大家想参与国际开源项目的开发,需要转变一个观念,就是我们要真正融入到开源社区中来。

开源的最大好处就是没有代码壁垒, 但是光有免费的代码是不够的, 如果你想用好开源软件,你需要真正融入到开源社区中来, 你可以在这里问问题, 提交 bug,或者补丁, 文档。 其实只要你愿意,就可以加入到国际开源项目开发。

对于在校大学生来说,还有一个途径可以帮助你加入到国际开源项目的开发,就是参加Google举办的Summer of Code。目前Google和各大开源组织都有联系,每年资助几千名世界各地的学生参与开源项目的开发。今年夏天在Apache参加GSoC的中国学生大概有12个人,大概占今年Apache GSoC整个项目人数的三分之一。

JavaEye:10.能介绍Apache Camel的开发团队吗?您目前是通过SOHO的方式工作吗?这种工作方式感觉如何?

jnn:整个团队有4,5个人,查看团队介绍:http://fusesource.com/community/apache-committers-and-fuse/。我们这比较特殊一点, 单位里同事很分散,在不同的地区,大家都在家办公。每个星期有电话会议,通过语音,邮件和其他方式交流。经常在家工作会虽然有孤单感,这是优点也是缺点,还有就是我们和国外的同事有时差, 有时候晚上也得干活, 所以干活和平时的生活分得不是很清楚。不过,现在我家女儿刚3个月, 我很享受在家工作的时间。另外,我们这边同事(前同事)联系还是比较紧密的, 基本上每个礼拜都会聚会一下。

JavaEye:11.你平时和国外的同事都是用英文交流吗?很多程序员技术很好,但是觉得英文太难,你有什么建议吗?

jnn:是的,和国外同事交流几乎是全英文环境。这个就是要多写多练。 其实我们的读写能力还是可以的,就是很少有机会直接和老外面对面的沟通。我刚开始的时候写Email也很痛苦, 一封信得花2个小时左右, 现在写得多了就好很多。目前直接和老外对话到机会还不多, 平时都是使用IRC, 和Email。 所以一定得多练习,当然开始到过程比较困难,只要你能坚持持续的使用,练习英文,练习口语,坚持半年以上,就挺过来,你的英文水平就能有很大的进步。关键要坚持。

JavaEye:12.作为一个JavaEye老会员,你对JavaEye网站有什么建议和意见吗?

jnn:JavaEye目前的受众很大,在业界的影响力也很大。我发现现在的JavaEye除了论坛也开始涉足媒体了,希望网站能够继续保持这个势头,继续成为开发者心目中的最棒的软件开发交流社区。

jnn介绍 Top

jnn (Willem Jiang,姜宁) 目前住在北京, 和其他的开源项目参与者在业余时间参与开源开发相比,他目前是被Progress雇佣专职做开源项目项目开发的,在2006年夏天开始参与Apache CXF的开发,在2007年夏天参与Apache Camel 开发。

除了技术, jnn的爱好有观看美剧,电影, 郊游,羽毛球,有一个三个月大的小女儿,是一位幸福的父亲。

jnn 博客:http://jnn.iteye.com/






  • 大小: 15.2 KB


评论 共 34 条
4 楼 lordhong 2009-08-03 04:03
   支持! 强大!
3 楼 jnn 2009-07-31 18:48
如果大家对Camel还有啥问题,可以直接在这提问, 我会尽量帮大家回答的。
2 楼 ouspec 2009-07-31 17:58
wangxinpier 写道
可惜,内容少了一点,没看够,呵呵


大家可惜想一些问题,我会为您继续采访他的。
1 楼 wangxinpier 2009-07-31 17:34
可惜,内容少了一点,没看够,呵呵

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • el表达式 获得本页面input文本框值 input text的v

     取页面值为什么要用EL.表达式 你说错了吧. 又不是Aciont值.Jquery取值可以这么写  $('#amount').val()  1,首先在电脑上打开浏览器,打开一个页面。  2、然后按F12进入页面检查的界面,如下图,选中其中的一...

  • (Java)EL表达式获取不到值以及其他问题

    1.EL表达式获取不到值 解决:在确定表达式正确情况下无法获取到数据库的值,可能是没有打开EL表达式。 添加:<%@ page isELIgnored=“false” %>即可使用。 2.javax.el.PropertyNotFoundException:the class ...

  • JSP的EL表达式语言

    1.EL表达式的简介EL表达式是一种JSP技术,能够代替JSP中原本要用Java语言进行显示的语句,使得代码更容易编写与维护。最基本的语法是${express}。EL的特点:2.获取并显示数据1)从四个域中通过key找到简单数据并显示...

  • EL表达式与JSTL简单入门

    简单来说EL表达式就是让程序员,简化了代码的书写量。在学EL表达式之前我们必须通过<%= %>来取出域中的数据,但这种方式 过于繁琐,所以就诞生了EL表达式。 EL取出JSP四大域...

  • JSP页面获取el表达式里的值

    https://www.cnblogs.com/xuedexin/articles/5671419.html

  • EL表达式和JSTL

    什么是EL表达式 Expression Language(表达式语言) EL的功能 替代JSP页面中访问数据时的复杂编码 执行表达式 EL的特点 自动转换类型 使用简单 EL表达式搜索域数据的顺序 El表达式主要是在jsp页面中输出...

  • JavaWeb学习之EL表达式和JSTL标签库

    EL表达式的格式是:${表达式},EL表达式在输出null值的时候输出的是空串,jsp表达式脚本在输出null值的时候,输出的是null字符串 EL表达式搜索域数据的顺序 EL表达式主要是在jsp页面中输出数据,而主要是输出域对象...

  • JavaWeb之(五)EL表达式

    五、EL表达式 5.1 什么是EL表达式 EL表达式:是指(Expression Language)表达式语言,是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据),在JSP2.0开始引入。 EL表达式的写法(用美元符号“$”...

  • (JSP)EL表达式

    EL表达式是一种在jsp页面静态部分获取数据的简单方式 动态部分为(jsp中的java代码块,jsp动作) 静态部分为(jsp中的html部分) 注意: EL获取的数据,只能从四大域里面获取数据获取,放进域里的代码才能够获取 示例...

  • EL表达式 和JSTL标签

    EL表达式获取数据,会依次从这四个域中寻找,直到找到为止。如果你的El表达式原样输出了,就要在jsp文件中加上。4 application: 当前应用有效。2 request: 当前请求有效。语法:${experssion}3 session:当前会话...

  • JS利用正则表达式替换文本框不符合要求内容(小细节)

    var reg=/[a-z]/ig str=str.replace(reg,'**') } </script> 可能有的人会犯上面的小错误,当输入字母时无法将输入的字符改变成*号,导致的原因是最后一行代码str此时代表的并不是文本框的值,仅仅代表的是刚输入时...

  • EL表达式及JSTL

    提示:文章写完后,目录可以自动生成,如何生成可参考...子属性]} EL表达式支持将运算结果进行输出 EL表达式绝大多数将对象输出是依靠toString()方法 EL表达式通过param输出参数值,例如: 在JSP中新增语句 显示结果为;

  • JSP的EL表达式的使用详解,超详细(一文看懂el)

    JSP的EL表达式的使用详解 一、什么是EL表达式 1.EL表达式的简介 EL表达式百度百科 全称(Expression language)表达语言 El表达式提供了获取对象以及属性的简单方法 2.对比JSP写法和EL表达式写法 JSP写法:<%=...

  • EL表达式与JSTL的常用功能

    EL表达式与JSTL的常用功能 ${EL表达式} 例如${username} .操作符 用来访问对象的属性 ,例如:${news.tile} []操作符 也能用来访问对象的属性,例如:${mews["tirle]}  经验: 1.EL区分大小写 2.使用EL前,必须先将...

  • EL(表达式语言)

    EL(Expression Language,表达式语言)是JSP2.0中引入的一个新内容。通过EL可以简化在JSP开发中对对象的...EL表达式语法很简单,它以“${”开头,以“}”结束,中间为合法的表达式,具体的语法格式如下: ${expr...

  • 在javascript中使用el表达式

    在javascript中使用el表达式,该怎么使用呢?网上有些人还在讨论说javascript是客户端的,el表达式是服务端的,客户端不能使用服务端的东西!纯属扯淡,如果按照这样理解的话,那浏览器是客户端,那浏览器就不能从...

  • EL表达式和JSTL标签的使用

    EL表达式取值和JSTL表达式应用

  • 在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)

    哎,够背的,最后4张图怎么调整都很小,看不清楚,所以大家还是看我这篇文章吧在javascript中使用el表达式(图片清晰版,有图有真相),这篇文章的图片可以正常看清楚,跟我这篇文章是一样的内容! 有些文章上说,...

  • JSP之EL表达式

    EL表达式用法 一、首先,弄清楚request对象的getParameter()方法和getAttribute()方法的区别。 getParameter()方法用来接收从前台传来的数据,它根据页面表单组件名称获取页面提交的数据。 例如:registe.jsp页面 ...

  • 藏区特产销售平台--论文.zip

    藏区特产销售平台--论文.zip

Global site tag (gtag.js) - Google Analytics