了解下规则引擎的优势(我觉得最重要是规则引擎定义了各种协议的相互转换--个人观点)
1.应用范围和特点:
对于企业应用来说,由于历史或者多厂商等原因造成了其系统之间的通讯协议多样化,
而由于企业业务发展,这些应用系统之间交互需求日益增多。
Apache Camel可以帮助大家通过定义简单的路由规则来实现不同企业应用之间的互联互通。
Apache Camel 把不同的企业应用抽象成为Endpoint, 通过URI来对这些Endpoint 进行描述,
由于Apache Camel提供了一个基于POJO的企业应用模式的实现,
同时Camel提供了60多个组件来负责具体的传输协 议,
这样用户可以通过简单的消息路由规则定义,就可以实现各应用系统之间交互。
举个例子,
如果你有一个应用只提供一个JMS接口,
而你的另一个应用提供 WebServices接口,
那你的路由规则可以这么定义:
from("jms://xxxx").to("cxf://xxxx)
当然你有可能需要对JMS接口过来的消息做一些处理在转发给WebService应用。
那只需在两个节点之间要加入一个processor来实现你需要做的处理就行了
from("jms://xxxx").processor(new MyProcessor()).to("cxf://xxxx")
总结:由上面的例子可以看到Camel的路由规则很直观简单,
可以像写Java代码一样定义路由规则。
当然Camel还提供了其他方式来描述路由规则,
例如Spring 配置文件,Scala等。
2.优势
(1) 目前市面上有不少的同类产品,例如同是开源的Mule,以及商业产品Fuse套件。
(2)Camel与它们相比有最大的不同就是它十分小巧,而且不容易让开发人员失去对代码的控制。
使用者可以把它当作一个小的应用库,而不是一个大的运行容器。
这样可以很轻松地将其集成的Web容器,JBI容器,或者OSGi容器中。
(3)也可以像写Java代码的方式编辑路由规则,支持开发人员在的集成开发工具中使用平常的,
类型安全的,可自动补全的Java代码来编写路由规则,
与那种复杂的XML配置相比极大简化了规则定义开发。
(4)更详细的有以下几点:
1.Camel使用一个Java特定于域的语言除了Spring的XML配置路由规则,并提供企业集成模式;
2.Camel的API极小而干净的,与的JBI,CXF的和的JMS的API紧密匹配。
3.基于周围消息交换的Camel要比基于UMO模型的Mule能更加紧密地映射到REST,WS,的WSDL和JBI;
4.Camel允许容易地暴露底层的传输细节(例如JmsExchange,JbiExchange,HttpExchange);
5.Camel在核心API支持隐式类型转换器,能更容易地把组件连接在一起;
6.Camel和Apache ActiveMQ,CXF,ServiceMix有很好的集成,而这些项目都是 企业应用开发经常会接触到的。
7.另外,Camel是完全开源,而Mule和Fuse套件的商业许可带有限制性。
学习来源:https://www.open-open.com/lib/view/open1340807942296.html