开源消息框架Mule配置基础.doc_第1页
开源消息框架Mule配置基础.doc_第2页
开源消息框架Mule配置基础.doc_第3页
开源消息框架Mule配置基础.doc_第4页
开源消息框架Mule配置基础.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【IT168 技术】Mule是开源的企业集成消息框架,它的配置需要使用大量的XML文件,本文就对这些配置文件进行介绍,首先还是普及一下Mule基础常识。什么是Mule?Mule是一个透明的,基于Java的消息框架,它允许不同的应用程序连接,从而摆脱应用程序之间直接相互调用的情况,Mule支持多线程/消息模式(默认是阶段式事件驱动架构,SEDA),输入和输出到不同的传送器(email,文件,数据库等),以及通过协议如SOAP 发送到Web Service,如图1所示。图- 1 Mule支持多种协议Mule没有要求要一个统一的消息格式,它允许在与不同服务相互操作时指定转换,Mule企业版支持多个商业消息系统,包括TIBCO Rendezvous和IBM WebSphere MQ。它的架构采用了三层:应用层,集成层和传输层。Mule实现了企业服务总线(ESB),并为面向服务的架构(SOA)提供了一个平台。分层的方法提升了可复用性,如图2所示。图- 2 分层的方法提升了可复用性安装MuleM网站上提供了两个Mule版本:1、企业版(需购买许可,有商业化支持,可从/download/ee/下载试用版);2、社区版(功能少一点,但是免费的)。对于Mule 2.x版本,需要安装JDK 1.5(/javase/downloads/index_jdk5.jsp)和Ant 1.7.1(/bindownload.cgi)或Maven 2.0.9(/download.html)。Mule使用入门指南在/display/MULE2INTRO/Offline+Documentation,如果开放工具使用的是Eclipse,最简单的办法是将classpath设置包括./lib/mule和./lib/opt目录下的所有.jar文件。运行MuleMule可以嵌入到Java应用程序、应用程序服务器或Web应用程序中,要运行Mule,你必须指定一个配置文件,这个配置文件描述了Mule的各项配置参数,有多种方法启动Mule:1、在命令提示符后mule -config 2、从一个脚本org.mule.MuleServer -config mule-config.xml/创建一个新的服务器,使用两个配置文件MuleServer server = new MuleServer(mule-config1.xml,mule-config2.xml);/启动服务器,布尔参数值确定了服务器是在一个新线程中启动还是就在当前的线程中启动server.start(true);3、通过指定配置生成器的全限定类名,如果不指定,Mule就使用默认值org.mule.config.builders.AutoConfigurationBuilder:3、通过指定配置生成器的全限定类名,如果不指定,Mule就使用默认值org.mule.config.builders.AutoConfigurationBuilder:4、通过分配一个具体的服务器ID与Mule环境交互:AutoConfigurationBuilder configbuilder = new AutoConfigurationBuilder(C:/MuleConfDir/mule-config.xml);DefaultMuleConfiguration muleConfig = new DefaultMuleConfiguration();muleConfig.setId(MY_SERVER_ID_1);MuleContextBuilder contextBuilder = new DefaultMuleContextBuilder();contextBuilder.setMuleConfiguration(muleConfig);MuleContext muleContext = new DefaultMuleContextFactory().createMuleContext(configbuilder, contextBuilder);muleContext.start();Mule组件本节定义组成Mule消息框架的不同组件,并介绍如何用XML来配置这些组件,这里的讨论针对的是Mule 2.x版本。服务组件服务是Mule用于实施集成解决方案的主要元素,一个服务组件是一段实现了某些业务功能的代码,如图3所示。Mule的一个主要优点是服务组件可以是简单的没有预先存在外部接口的POJO(Plain Old Java Objects,简单Java对象),在Mule 1.x等早期版本中,服务组件被称为通用消息对象(universal message objects,UMO)。图- 3 服务组件Mule为任何服务器组件提供了可插拔的连接性,使用特定的Mule配置设置,定义服务的特定行为,把外部消息转换成服务组件函数的调用,并控制它的生命周期,配置这个转换的是一个XML文件(默认是mule-config.xml),这个文件指定了消息流,应该指向服务组件。Mule消息Mule中的消息完全是一个数据包,它可以在一个特定通道上或端点上应用程序之间发送,一个消息也相当于一个由外部事件触发的事件,如收到队列中的数据或一个文件被拷贝到某个目录中,你可以使用Mule客户端编程产生Mule消息。服务端点端点的功能相当于网关,或者说是连接服务组件到外部消息的通道,它可以位于本地也可以位于网络上,如图4所示,Mule可以被配置为在端点上拦截消息,如果需要,然后将消息进行转换,转换后再传递给服务组件。图- 4 入站(Inbound)和出站(Outbound)端点服务可以使用不同的传输器来接收和发送消息,对服务将要使用的每种传输器,你可以使用一个独立的端点。消息路由消息路由控制组件如何接收消息,以及在处理后应该发送到何处去,入站路由控制服务如何处理入站消息(如,有选择地允许那些符合特定标准的消息),出站路由控制服务处理完消息后该将其发往何处(如,将其发送到接收者的列表,或将消息拆分,然后发送到不同的端点),如图5所示。图- 5 入站和出站路由路由是和过滤器结合工作的,过滤器指定限制条件,只有符合条件的消息才能被路由到服务,并包括一个表达式从当前消息中提取信息。传输器和连接器传输器实质上就是数据运输工具,它使用特定的协议在应用程序之间运输消息,如图6所示。Mule支持多个标准的传输器(JMS,HTTP等),并可以通过扩展org.mule.transport.AbstractConnector创建自定义传输器。图- 6 Mule提供的传输器连接器表示特定传输器的配置,例如,JMS使用一个队列或一个主题来接收或发送数据,HTTP连接器使用一个端口来交换数据,具体的队列,主题和端口在连接器内部指定,连接器可以全局指定(为整个Mule应用程序)或在服务级本地指定。转换器数据转换是一种让迥然不同的组件之间可以相互理解对方的消息的技术,消息经历转换弥补了两个组件的数据表现之间的差异,Mule翻译器(也叫做转换器)是Java类,如图7所示。图- 7 转换器翻译消息转换的例子包括从一种XML消息转换成另一种XML格式,或将XML消息转换成Java对象,转换器用于将转换接收到的数据,然后以特定协议发送出去,如JMS传输器使用的ObjectToJMSMessage转换器。Mule配置了大量的转换器,并允许你通过扩展AbstractTransformer创建专用的转换器。服务可能被限制到本地网络或只能使用本地或私有的传输器,私有传输器不被外部应用程序支持,通过提供一个能够通过转换器转换和通过端点访问服务组件的消息框架,Mule为常见的intranet/Internet消息交换提供了一个组件服务。使用Mule客户端Mule客户端是一个为Java客户端从Mule服务器或其它应用程序接收或发送消息的简易接口,一般说来,消息是由外部事件触发的,如队列上接收到一个消息,或一个文件被拷贝到某个目录下。通过在单元测试或负载测试中引入消息,Mule客户端可以帮助测试消息流,如果你在相同的类加载器中使用Mule客户端(如一个Web应用程序或单独的Mule),客户端将会访问服务器配置,例如,如果在你的服务器配置文件中定义了以下端点:那么这个端点就可以被Mule客户端访问:MuleClient client = new MuleClient();client.dispatch(serviceEndpoint, dataObject, null);如果你以独立模式运行Mule客户端,你要使用它自己的Mule XML文件进行配置:MuleClient client = new MuleClient();client.dispatch(serviceEndpoint, dataObject, null);综合应用Mule使用数据文件确定数据流,以及使用哪个组件、路由、传输器和转换器,如图8所示,端点定义了使用的传输器,下面是一个通过Mule应用程序的事件流:1、客户端通过调用一个URL(如http:/mycompany/order:8081)启动进程;2、声明一个HTTP入站传输器,拿起消息并检查入站路由中指定的输入(这里就是URL字符串)是否需要进行转换;3、如果需要转换,就会在消息上应用转换器,如HttpRequestToNameString转换器;4、消息被发送到处理业务的服务组件;5、Customer Data Service组件从数据库中检索顾客信息;6、出站路由决定将服务组件的处理结果路由到何处,例如,出站路由可能会指定一个JMS端点,消息被推送到队列或主题上;7、出站传输器拿起这个消息,检查是否需要转换,接收服务的入站路由接收消息,然后如步骤2那样开始继续处理消息。图- 8 Mule中的数据流使用mule-config.xml工作Mule配置文件由以下标签组织成一颗XML元素树:1、 - 定义应用程序中的服务;2、 - 配置一个服务;3、 - 服务的描述内容;4、 - 配置入站路由,它们的端点以及入站转换器;5、 - 配置一个或多个出站路由,它们的端点以及出站转换器;6、 - 配置一个异步应答路由,它用于异步请求/响应消息中;7、 - 配置连接器或模型或服务上的错误处理策略。下面是一个示例模型: . . . .配置设置将服务组件编织成一个应用程序是由配置文件来完成的,Mule的配置设置是由开发人员负责的,它们包括:1、服务组件的声明;2、哪个服务上的端点将接收消息;3、将消息引入到服务组件之前使用哪个转换器;4、出站端点上的消息下一步改流向哪里;5、消息的路由信息将其发送到下一个服务组件。声明服务组件1、 - Mule组件是通过指定实施类名配置的,Mule为组件接收的每个消息创建新的类实例,注意是一个特定的Java类而不是函数:2、 - Mule创建一批组件,共用组件配置,对象工厂创建一个单一的对象实例也可以指定: 3、 - Mule可以创建一个入口点分解器基于消息负载情况动态选择调用的函数:4、 - 这个入口点分解器用于组件实现org.mule.api.lifecycle.Callable接口,组件可以实现Callable接口废除一切动态解决方案,并调用接口函数进行替代。5、 - 这个自定义入口点分解器可以和实现了org.mule.api.model.EntryPointResolverSet接口的类一起实施,为了准确地在你的端点上指定函数,你可以在端点上使用函数参数,如:6、Mule提供了多个简单有用的组件用于测试和初始化原型,如,它将所有接收到的消息输出到控制台中。配置端点1、 - 使用它声明一个全局范围的端点,在整个Mule应用程序中都可以使用,在一个服务中,ref=用于引用全局端点:.2、 - 这是服务组件接收事件的通道,它包括使用的传输器,地址,路径或资源(任何有效的URI):3、 - 这个是组件返回的数据被发送出去的通道配置入站路由1、 - 这个路由在入站消息上应用一个或多个过滤器,符合要求的消息被转送到组件。2、 - 这个路由通过检查入站消息的唯一性消息ID确保服务接收的消息是唯一性的,ID可以使用idExpression属性中定义的表达式生成。3、 - 这个路由通过计算消息内容的散列值确保服务接收到的消息的唯一性。配置出站路由1、 - 这个路由使用过滤器确定消息是否匹配特定的标准。= 100000/2、 - 这个路由匹配所有的消息,通过一个配置好的端点发送出去。3、 - 这个路由用于从单个端点发送相同的消息到多个端点,或实施消息属性或有效负载确定的下一个目的地的路由滑动行为。jms:/orders.queuejms:/tracking.queue配置传输器和连接器你可以为传输器声明一个描述连接信息的端点URI的值。同样,你可以使用元素定义一个连接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论