MuleESB简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Mule ESB
Mule ESB简介
什么是Mule ESB?
Mule ESB是一种基于java的、轻量级的企业服务总线和集成平台,她允许开发者快速的、简单的连接应用,并能够实现数据的转换。

从2005年发表1.0版本以来,Mule吸引了越来越多的关注者,成为开源ESB中的一支独秀。

目前许多公司都使用了Mule,比如沃尔玛,惠普,索尼,Deutsche Bank 以及CitiBank 等公司。

Mule官方网站:/
Mule ESB的主要功能如下:
●服务的创建与管理(Service creation and hosting):用Mule ESB作为一
个轻量级的服务容器来暴露和管理可重用的服务。

●服务调解(Service mediation):隐藏服务消息的格式和协议,将业务逻
辑从消息中独立出来,并可以实现本地独立的服务调用。

●消息路由(Message routing):基于内容和规则的消息路由、消息过滤、
消息合并和消息的重新排序。

●数据转换(Data transformation):在不同的格式和传输协议中进行转换数
据。

Mule3
Mule近期推出了Mule3,Mule3的新增特点-云连接(Cloud Connect)。

云连接提供了可以用简单安全的方式为企业提供基于云技术的数据和服务。

它的核心是IBeans,一个轻量级、可重用的接口,用于Web技术的连接扩展和数据服务。

Mule云包括以下内容
1、Integration Beans (合成bean):他们是可重用的云接口,可以注入到组件中,可以接受外部的服务,比如说亚马逊、推特、Facebook等,并且是一种简单的接收服务、管理安全机制的方法。

请求验证、数据传输、错误挂起等也可以通过这种方法来实现。

2、Rest / JAX-RS:(REST协议:即REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。


现在Jersey 已经是Mule核心部署的一部分,提供本地化的对REST和JAX-RS 的支持,例如Apache CXF。

Jersey现在已经在易配置和高可扩展性方面做的非常优秀。

Jersey现在使用一种包含很多Jersey资源的接口实现组件来替代终端类型的实现方式。

3、AJAX:Mule现在直接融合了Javascript应用。

Mule3包括了服务终端和Javascript客户端允许事件被直接发布到浏览器,并且事件可以从浏览器进行发布。

4、Web Service:现在对Web Service的发布的配置将更加容易,其扩展性也进一步加强。

5、ATOM and RSS:Mule 3 现在能够较好的支持ATOM了。

6、JSON Support:Mule3包含对JSON数据绑定和JSON传输的支持。

7、JAXB Support:支持组件XML绑定将自动进行,并且也添加了新的JAXB 传输。

其他的一些支持:
1、FLOW:配置的流程化。

2、Patterns:配置的模式化,可以极大简化配置,将不同情况的配置进行模式化划分。

3、Annotation:改进后新的注释方法对组件中的注入反转、transformers的发布、组件方法的Pol有很大作用。

4、Deployment:支持单一服务和组服务的热部署。

同时支持部署模型定义。

结构上的提高:
5、Message Processor API:消息处理API,Mule3其内部处理方式较为灵活,能够在将来其他模式调整时适应外部服务组件。

6、Message Exchange Patterns:消息交换模式,消息在Mule3中的流转将更加精确和灵活。

7、Message Property Scoping:消息属性作用域。

较好的实现了属性的作用范围。

8、Lifecycle Improvements:生命周期的改进。

优化了Mule的开启和关闭行为,热部署也在这方面得以展现,并支持JSR-250 生命周期注释方法。

9、Exception Handing:异常处理,异常处理的兼容性更好,并且有错误行为预处理功能。

10、Automatic Transformation:自动转换,Mule3增强了自动转换引擎,用于进行数据绑定,例如XML/JAX、JSON,并支持自定义。

11、CXF Now a Module:CXF现在在Mule3中作为一个模块,在Mule3中对CXF
进行了优化,使得CXF的用户与普通的管道/过滤器元素一样。

12、REST:Mule的开发团队十分看好REST,在其文档中使用了“enjoy”这个单词来形容REST,可见使用REST协议开发Mule3服务应该是比较合适的。

Mule3其他的一些变化:
1、Message factories:消息工厂,从底层将消息翻译成MuleMessage格式。

所有MuleMessage都是由消息工厂创建的。

2、XQuery Support:对XQuery支持。

3、Dynamic Endpoints:动态终端,Mule中的终端可以动态构造,通过Mule传输的消息可以构造终端地址。

4、JBoss jBPM:文档中说明Mule从很早以前就开始与JBoss jBPM进行整合了,但是在Mule3中,对其进行了改善,并将JBoss jBPM版本升级到了4.4版本。

5、Transaction Enhancements:Transaction被增强,通过配置<xa-transaction>元素属性,Mule可获知在Mule外部Transaction已经开始了。

6、AXIS Code Removed from Mule:AXIS代码在Mule3中被移除,其将作为一个独立模块存在。

Mule的核心竞争力
1、Mule的组件可以是你想要的任意类型。

你可以轻松整合任何来自其他框架中某个组件的“简单的Java对象”(POJO)。

2、Mule和它的ESB模型能够重用重要组件。

和其他框架不同,Mule允许你使用现有组件而不需要任何的修改。

组件不需要任何Mule-specific编码,也不需要编程API,就能在Mule中运行。

业务逻辑被完整的从消息逻辑中分离出来。

3、消息可以是任何格式,可以是SOAP,也可以是二进制图像文件。

Mule没有任何设计约束,如:XML消息或WSDL 服务契约。

4、你可以部署Mule在多种拓扑结构中,而不仅仅是ESB。

因为Mule是轻量级的,是可嵌入的。

Mule可以大大降低产品上市时间,提高生产率,保证项目的安全,能够根据需要适应改变并向上或向下升级应用。

Mule ESB简介
对消息框架的理解
建立网络应用程序的优点之一,是一个应用程序可以将数据发送到另一个应用程序。

但是,许多应用程序没有能力直接读取或处理来自另一个应用程序的数据。

MuleESB为此提供了一个消息处理框架,用于读取、转换和发送应用程序间的数据。

Mule对消息(Message)的定义:一个消息是一个简单的、可以处理的、在应用程序之间的一个通道(也称为队列)上发送的数据包。

在最基本的层面上,当应用程序连接Mule,它从一个应用程序中读取数据,根据需要把它转换,并把它发送到接收端应用程序。

这可以整合所有类型的应用程序,甚至包括没有内置集成的程序。

Mule消息传递框架以企业服务总线(ESB)的架构为基础。

Mule和传统ESB的区别是,MuleESB只有在需要时转换数据。

对于传统的ESB,必须为每个应用程序创建一个连接到总线的连接,并将其传输数据转换成一个单一的共同通讯格式。

因此需要处理每条消息而耗费大量的时间,开发时也需要更多精力。

MuleESB消除了对单一消息格式的需要。

MuleESB支持多种消息管道,如HTTP 或JMS,消息在传输过程中,只有在需要时候进行翻译转换。

因此,MuleESB 提高了性能,相比于传统ESB降低了开发时间。

理解Mule ESB的架构
企业发票处理:
SOA简介
SOA是面向服务的架构的缩写,是软件开发的发展方向。

SOA允许IT 组织通过联合应用的功能组件或者服务来创建新的应用。

使用SOA企业能大大节省开发成本并能迅速的适应业务条件的改变。

SOA还能更好的整合企业的IT资源,包括早先独立开发的应用以及遗留系统。

Mule ESB完全支持SOA方法论并能够编排互相通信的服务,使你能够很容易的将所用的应用整合到一起。

数据的处理
当一条消息从一个应用程序(如从一个订单输入系统发票)发送,MuleESB 将其发送到服务,此服务是使用一些特定的业务逻辑(如核对客户和库存数据库)对这条消息进行处理,然后路由到正确的应用程序(如订单执行系统)。

Mule 包含许多消息加工处理和消息路由的功能组件。

处理流程的关键部分是服务组件。

服务组件执行业务处理,如阅读发票信息、逻辑分析、增加客户数据库信息等,然后转发到订单执行应用,如下图。

Mule中服务的重要特点是,它不具有任何Mule特定的代码,它可以仅仅是一个POJO,Java Bean,Spring Bean或WebService,包含在一个特定的方式处理数据的业务逻辑里。

Mule管理服务组件、配置设置绑定、发布服务,并确保配置的消息消息传递的正确性。

可以有许多不同的服务组件,执行不同的业务逻辑。

服务组件间的消息路由
服务组件中包含对消息中的数据进行的业务处理,但本身未包含关于如何发送和接收消息的信息。

为了保证服务组件对消息的正确接收和当处理完成后对消息的正确路由,需要在配置MuleESB时,为组件设置inbound router(入站路由)和outbound router(出站路由),如下图所示。

入站路由指定的消息将被服务组件进行处理,并且可以过滤外来消息,对其进行聚合和重新序列化。

处理完成后的消息,将由出站路由指定发送路线。

从消息中分离业务逻辑
Mule众多优点之一,是它可以处理通过各种协议发送来的消息。

并且服务组件是完全屏蔽消息格式的,在消息路由转发之前,由transformers改变消息的payload,使得消息能够符合服务组件要求的格式,这样服务组件就可以直接读取消息了。

消息的传输、转换和路由,对于服务组件来说是完全透明的,如下图所示。

Transformers对于Mule的数据交换十分重要,因为它能够将数据转换成服务组件或应用程序可以直接使用的格式,并且是在需要时候才转换,不需要时不进行转换,机制比较合理。

可以通过设置多个transports来处理多个渠道中的数据。

将业务处理和数据转换分离,这样就会带来很大的灵活性,因为这样能够专心考虑业务逻辑,不用过多考虑数据格式。

在官方文档中也说明了,服务组件也支持使用没有经过转换的原始数据格式。

连接协同工作
连接协同工作的关键是终端所配置的元素信息。

在出站路由和入站路由中指定终端,使得MuleESB能够知道使用哪个transport进行消息转换,将消息发送到哪个服务组件进行处理,处理后将消息发向哪里。

终端的重要属性是地址,终端地址采用统一资源标识符(URL)表明使用哪个transport、transport位置、和其它一些参数,下图描述了连接协同工作处理过程。

一个服务可以接收来自多个transports发送来的消息,但是必须进行配置,可以指定多个终端。

消息路由和终端有过滤器的功能,可以只接收特定的消息,不愿接收的消息不接收。

总之,Mule提供了一个简单的轻量级的方法来支持服务组件的开发,不需过多考虑数据的传送和数据格式的转换。

但是其它连接数据源的方法将会带来额外的代码量。

Mule的使用将会提高服务组件的开发速度,并通过配置XML改变其行为,而非普通Java代码。

理解逻辑数据流
通过发票处理这个例子,了解逻辑数据流程。

下面图表举例说明了,在Mule ESB中数据流是怎么工作的。

上图步骤说明:
(1)、客户在公司网站上生成了一个订单,产生了一份发票,并将发票内容以XML的形式提交给/orders。

(2)、HTTP transport接收这个XML发票信息,将其打包成Mule消息。

客户数据服务入站路由的终端设置为/orders,由于服务组件要求的消息格式是Java object,所以入站路由设置入站消息必须包含一个Java object,所以HTTP transport会将XML格式的发票转换成Java object类型,来适应相应服务。

(3)、将XML转换成Java Object。

(4)、将转换完成的消息发送给服务组件。

(5)、客户数据服务组件从总客户数据库中查询客户信息,并更新发票信息到数据库。

(6)、HTTP transport使用出站路由配置,确定将经过服务组件处理后的消息发送到/verify。

(7)、HTTP transport 使用入站路由中对发票验证服务的配置,将接收到的消息发送到服务组件。

(8)、服务组件根据发票内容更新所有仓库清单信息。

(9)、出站终端配置要求的是一个JMS地址,所以JMS transport 将消息发送到
订单结束应用。

将Mule整合到环境中
Mule是基于ESB架构的,消息是ESB的重要组成部分,其实现方法主要使用JMS,Mule没有规定必须使用哪种消息中间件,可以使用ActiveMQ等主流消息中间件(Mule也有自己的消息中间件产品MuleMQ),除此之外支持EJB,mainframe applications、web service、socket和文件系统的连接。

Mule还包括其它的拓扑结构:对等网络、C/S、hub-and-spoke等。

这些拓扑可以混合在一个企业服务网络,构成模型丰富的企业信息服务模型,如下图所示。

Mule支持分布式使用和负载均衡,如下图所示:
Mule ESB可以安装在Apache Tomcat、BEA WebLogic、IBM WebSphere、Oracle Application Server、SunOne、Geronimo、JBoss等WEB容器或应用服务器上。

与Mule ESB兼容的技术
操作系统
●Linux
●Windows
●Solaris
●AIX
●HP-UX
●Mac OS X
应用服务器
●Standalone
●Tomcat
●WebLogic
●WebSphere
●Geronimo
●JBoss
●Jetty
●Resin
容器
●EJB 3
●jBPM
●Spring
JMS服务器
●ActiveMQ
●FioranoMQ
●JBossMQ
●OpenJMS
●OpenMQ
●Oracle AQ
●SeeBeyond
●SonicMQ
●Sun JMS Grid
●SwiftMQ
●TIBCO EMS
●WebLogic JMS
开发工具
●Ant
●Data Mapper (Eclipse IDE, Oakland) ●Eclipse
●Japex
●Maven
●Mule IDE
●Profiler
Transports
●Abdera
●Amazon SQS
●Axis
●BPM
●CICS CTG
●CXF
●Email
●FTP
●Hibernate
●HTTP/S
●IMAP/S
●JCR
●JDBC
●Jersey
●Jetty/Jetty SSL
●JMS
●LDAP
●Multicast
●POP3/S
●Quartz
●Restlet
●RMI
●SalesForce
●SAP
●Servlet
●SMTP/S
●SOAP
●STDIO
●TCP
●UDP
●VM
●XMPP
●WSDL
安全
●WS-Security
●Acegi
●Jaas
●PGP
●Spring Security
数据库
●Derby
●MySQL
●Oracle
Web Service技术
●Axis
●Atom
●CXF
●.NET Web Servces ●REST
●SOAP
●WS-Addressing
●WS-Policy
●WS-Security
●WS-I BasicProfile ●WS-I SecurityProfile ●WSDL
语言
●Groovy
●Java
●JavaScript
●Jaxen
●JRuby
●JXPath
●Jython (Python)
●OGNL
●RegEx
●SXC
●XPath
●XQuery
数据格式
●Atom
●Base 64 encoded
●Byte arrays
●CSV
●EDI
●Encrypted
●GZIP
●Hex strings
●HTML / XHTML
●Java objects
●JAXB
●JSON
●Streaming
●Strings
●XHTML
●XML
●XML entity encoded
部署技术
●ESB
●Client/Server
●Peer-to-Peer
●Enterprise Service Network ●Hub and Spoke
●Pipeline
事件处理
●Asynchronous
●Routing Patterns
●SEDA
●Streaming
●Synchronous
总结
在理解了MuleESB的全部架构理念和运行机制后,对MuleESB进行总结。

MuleESB提供了一个消息框架,用于程序之间的数据交换。

应用被封装成为服务,服务包含服务组件、消息路由和其它一些配置。

Transport使得服务间的数据在不同渠道内得以传送,并且transport在对数据的传输过程中,对需要格式转换的数据进行数据转换。

MuleESB不是取代现有程序架构,相反MuleESB利用如Apache CXF、Spring 等开源项目,对自己的项目进行了功能加强。

MuleESB得以较好的解决各个系统、各种平台、各种复杂情况的整合。

相关文档
最新文档