一提到总线,一般学计算机专业的往往会联想到两样东西,一是网络拓扑上的总线结构,二是电脑主板上的总线。
和他们不同的是,企业服务总线是一种软件总线,但是他们都可以进行一定的类比。类比是快速学习最好的方法之一。
网络拓扑的总线由三个东西构成:网络设备(PC,服务器,交换机,路由器),端口(网卡-1个端口,路由器-n个端口),连接各个设备的网线,数据必须通过网卡端口传输到设备。
电脑主板上的总线也由三个东西构成。处理器(CPU,GPU),针脚(信号输入,输出的针脚),连接各个处理器的线路,同样在每一个时钟周期里,信号通过针脚进入处理器,再从别的针脚输出。
通过类比,可想而知,ESB软件上的总线必然也由吉祥三宝构成,在Mule里面,他们分别是UMO,End Point,数据的传输路线(当然这是无形的)。
UMO可以比喻成一个CPU,EndPoint就是这个CPU的针脚,数据从EndPoint(inbound)进入UMO,经过UMO的处理,从另一个针脚发送出(outbound),这样就完成了企业服务总线的一次最基本的操作。
Mule ESB最核心的概念:
1 UMO:从上面的描述可以看出,UMO就像一个CPU一样,它是业务应用的最基本单元。所有的业务逻辑都要写在UMO里面,例如收到一个请求发货请求的消息以后,我们首先检查库存是否足够,如果足够,那么生成一个发货单消息给仓库系统的接口。在这里面,检查存活和生成发货单是程序的业务逻辑,我们要开发一个进行该操作的UMO。
然后我们要定义该UMO的针脚,例如收到发货请求的接口,发出消息给仓库系统的接口。
2 Model:
Model包含了一组UMO,通常这一组UMO一起组成了一个应用。这就好比把一组小的CPU封装成一个大CPU来实现更复杂的功能。
3 End point:端点,就是我们前面说到的针脚,CPU只有通过针脚才能和外界交互,同样UMO必须通过End Point和别的系统交互。
Mule使用的关键,就是定义端点,这些端点就是系统交互的接口
<endpoint-identifiers>
<endpoint-identifier name="VoipBrokerRequests"
value="vm://VoipBrokerRequests"/>
<endpoint-identifier name="ProxyService"
value="axis:http://localhost:service/proxyService"/>
<endpoint-identifier name="BuyService"
value="axis:http://localhost:service/buyService"/>
<endpoint-identifier name="ValidService"
value="axis:http://localhost:service/validService"/>
<endpoint-identifier name="PurService"
value="axis:http://localhost:service/purService"/>
</endpoint-identifiers>
一些其它的概念:
Translator:翻译器,翻译不同的消息协议,例如将Java对象翻译成SOAP协议
Normalizer: 规整器,规整器可以理解为一个协调员,它管理着多个翻译员,比如来了一个美国人,就把它分配给一个英语翻译员,来了一个德国人,就把它交给一个德语翻译员。在软件系统中,同一种消息可能有不同的格式,例如申请书,我们允许用户直接网上申报,或者客户端填写完毕后作为附件发送邮件。这些消息在规整器这里被归类,如果是直接申报的消息,交给一个翻译器处理,如果是邮件申报上来的,交给附件翻译器处理。
Recipient list:接收消息用户列表,用于一个消息你可能想发送到多个机构,例如你填写了一个申请表要同时发送给好几个部门审批,可以把这些部门都写在一个Recipient list中,系统会自动发送,就像短信的群发一样。
Aggregator:如果某一个事件需要等待好几个消息到齐后才进行处理,就可以使用它。例如我将申报表,资格表等分别发送给不同部门审核,等这几个部门审核结果都发送回来以后,我才可以统一处理他们。
====
Mule的UMO组件是POJO,所以初学者往往弄不清楚这些POJO的组件如何和整个ESB进行交互。
Entry Point 入口点
当UMO接收到一个事件之后,Mule会调用该UMO组件的入口点。Mule会根据事件的负载类型自动的选择一个方法来调用。
这意味着一个UMO组件可以有很多入口点。
事件的负载类型是由该组件接收事件的接收器中的入口转换器决定的,但有一些接收器例如soap接收器会自动管理类型映射,因此它就不需要转换器。
如果UMO实现了Mule默认的事件接口org.mule.umo.lifecycle.Callable,则该方法总是会被调用。
Event Flow 事件流
Mule有一些默认的规则来管理进出组件的事件流。
1. 当接收到事件时,Mule首先按照上面的描述调用入口点方法
2. 返回消息或称出口消息使用下面的方法获得 -
a. 如果调用的入口方法返回不是void, (Callable.onEvent() 返回一个Object) 直接使用该方法的返回对象。如果返回对象为null,该请求将不会进行进一步处理。
b. 如果调用的入口方法返回是void,则调用该方法时候传递的参数将被作为返回对象,此时我们假定这些参数的值被改变了。
3. 出口事件会根据组件的配置来自动的路由
a. 如果配置了出站路由,则调用该路由。
b. 如果只配置了唯一一个出口端点,则调用它。
c. 如果有多个出口端点,第一个会被调用。
分享到:
相关推荐
mule-standalone ESB 企业服务总线的开发工具,欢迎大家使用
mule-standalone ESB 企业服务总线的开发工具,欢迎大家使用
用户数最多 社区最活跃的开源框架 企业服务总线 虽然没有实现JBI但是却非常好用。
SOA ESB Mule BPEL PPT 详细介绍了Mule的主要功能。企业服务总线. 需要的朋友自己下载看吧
mule号称开源ESB的最好实现,一个以Java为核心的轻量级的消息框架和整合平台。它使得开发人员可以快速,简单的连接多个应用。 目前许多公司都使用了Mule,比如Walmart,HP,Sony,Deutsche Bank 以及 CitiBank等公司。...
简介了企业服务总线mule的实现基本结构
MULE是一款开源的企业服务总线平台,可为企业各应用提供服务集成,支持基于Java的各种远程消息通信协议,如RMI、CORBA、WebService等等。资料含MULE的环境、配置、架构、集成、工具与使用个方面的指南,是应用MULE的...
Mule是一个企业服务总线(ESB)消息框架.它的主要特性包括: 1.基于J2EE1.4的企业消息总线(ESB)和消息代理(broker). 2.可插入的连接性:比如Jms,jdbc,tcp,udp,multicast,http,servlet,smtp,pop3, file,xmpp等. 3.支持...
muleide-2.1.1,在eclipse中的插件,支持mule项目的动态发布 mule是开源的ESB项目,支持消息路由和转发,是比较全面的企业服务总线工具。。
企业服务总线(Mule ESB)的研究与实现
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
Mule是一个企业服务总线(ESB)消息框架,而且Mule是一个轻量级且高度可扩展的ESB。
开源企业服务总线资料,介绍MULE ESB 官方例子的使用和原理。
MULE ESB是开源企业服务总线中用户数量最多,文档最丰富,堪称经典。
Mule ESB是一个轻量级的java 企业服务总线,方便开发人员集成分布式系统。首先是开发环境的配置。这里给出了安装过程。
企业服务总线ESB中用户数量大,文档丰富,社区成熟的一款开源ESB。
Mule ESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB支持集成现有系统而无论其底层采用何种技术,如JMS、Web Services、JDBC、HTTP以及...
Mule是一个企业服务总线(ESB)消息框架.它的主要特性包括: 1.基于J2EE1.4的企业消息总线(ESB)和消息代理(broker). 2.可插入的连接性:比如Jms,jdbc,tcp,udp,multicast,http,servlet,smtp,pop3, file,xmpp等. 3.支持...
企业服务总线用户人数多社区活跃文档丰富,总线的配置和原理进行了很好的说明