Mule_ESB_用户手册第一章.doc
Mule ESB 用户手册作者:杨欣华第1章:Mule ESB简介1、什么是Mule ESB?Mule ESB是一种基于java的、轻量级的企业服务总线和集成平台,她允许开发者快速的、简单的连接应用,并能够实现数据的转换。Mule ESB的主要功能如下:l 服务的创建与管理(Service creation and hosting):用Mule ESB作为一个轻量级的服务容器来暴露和管理可重用的服务。l 服务调解(Service mediation):隐藏服务消息的格式和协议,将业务逻辑从消息中独立出来,并可以实现本地独立的服务调用。l 消息路由(Message routing):基于内容和规则的消息路由、消息过滤、消息合并和消息的重新排序。l 数据转换(Data transformation):在不同的格式和传输协议中进行转换数据。我们是否需要ESB?这部分内容可以参考“To ESB or not to ESB”Mule的核心竞争力1、Mule的组件可以是你想要的任意类型。你可以轻松整合任何来自其他框架中某个组件的“简单的Java对象”(POJO)。2、Mule和它的ESB模型能够重用重要组件。和其他框架不同,Mule允许你使用现有组件而不需要任何的修改。组件不需要任何Mule-specific编码,也不需要编程API,就能在Mule中运行。业务逻辑被完整的从消息逻辑中分离出来。3、消息可以是任何格式,可以是SOAP,也可以是二进制图像文件。Mule没有任何设计约束,如:XML消息或WSDL 服务契约。4、你可以部署Mule在多种拓扑结构中,而不仅仅是ESB。因为Mule是轻量级的,是可嵌入的。Mule可以大大降低产品上市时间,提高生产率,保证项目的安全,能够根据需要适应改变并向上或向下升级应用。2、理解Mule ESB的消息框架 通过网络一个应用能发送数据到另一个应用。但是,许多应用没有能力读取或处理来自其他应用的数据。Mule ESB通过提供一个消息框架可以解决这个问题,这个消息框架能够在应用间将数据作为消息来读取、转换和发送。每个消息都是一个仅仅是一个数据包,能够在应用间通过一个特别的通道被处理和发送。和传统的ESB不同,Mule ESB只转换需要转换的数据。传统的ESB你不得不为每个应用都创建adapter,这些adapter用于将应用连接到总线上,并转换应用数据到一种单一的通用消息格式。开发这些adapter及处理每个消息需要大量的时间和精力。Mule ESB消除了单一消息格式化的需求。信息可以通过任何通道(如HTTP或JMS)传送,并且只转换那些需要转换的数据。因此Mule ESB和传统的ESB相比能够提升性能并降低开发时间。参考文档:企业集成模式:设计、建立和部署消息解决方案3、理解Mule ESB的架构这一部分描述了Mule ESB架构的各个组成部分以及它们是如何处理消息和消息中的数据的。SOA简介SOA是面向服务的架构的缩写,是软件开发的发展方向。SOA允许IT 组织通过联合应用的功能组件或者服务来创建新的应用。使用SOA企业能大大节省开发成本并能迅速的适应业务条件的改变。SOA还能更好的整合企业的IT资源,包括早先独立开发的应用以及遗留系统。Mule ESB完全支持SOA方法论并能够编排互相通信的服务,使你能够很容易的将所用的应用整合到一起。数据的处理Mule ESB通过service component(service component)来处理消息,实现业务逻辑。Mule ESBservice component的重要功能是不需要任何“Mule ESB-specific”编码,service component仅仅是一个包含用特殊方式处理数据的业务逻辑的POJO, Spring bean, Java bean, 或者web service。Mule ESB管理这些service component,通过设置配置文件来打包他们,暴露他们成服务并根据配置文件中这些服务的定义确保正确的消息传送给service component或由service component发出。在service component中路由消息 service component通过inbound router和outbound router 来获得和发送消息,它们能保证service component可以接收和发送正确的消息。inbound router用于指定service component即将处理的消息,它可以对消息进行过滤、聚合、重新排序,然后再传给service component。outbound router用于指定被service component处理后的消息将被发送到哪里。你可以定义多个inbound 和 outbound路由约束,甚至可以将router串联起来,共同为service component服务。从消息中分离业务逻辑 在Mule ESB中,service component被完全从消息格式中分离出来(service components are completely shielded from the message format.)。Mule ESB用“transport”进行消息的搬运,且一种“transport”只能搬运一种数据,“transformers”用于改变消息负载的格式,转换消息对象的类型。值得注意的是“transformers”只是用来转换需要转换的数据,另外你可以用多个类型的“transport”来处理不同的“通道”(channels)Wiring Everything Together(连接各个服务) 配置文件中的元素“Endpoints”主要用于将所有的服务连接起来。你需要在“inbound 和 outbound routers”中指定“Endpoints”,告诉Mule ESB什么样的“transport”被使用、发送消息去那里和那个service component应该接收这个消息。“Endpoints”主要的组成部分是以URI(uniform resource indicator)表示的地址。4、理解逻辑数据流(Logical Data Flow) 下面图表举例说明了,在Mule ESB中数据流失怎么工作的。. The customer places an order on the company web site, and an invoice is created as an XML form and submitted to . The HTTP transport receives the XML invoice and wraps it in a Mule message. The Customer Data services inbound endpoint is set to and its inbound router specifies that the message must contain a Java object, so the HTTP transport prepares to transform the XML invoice and dispatch the message to the service. The XML to Object transformer converts the XML invoice into a Java object. Note that the next service and the final application also expect Java objects, so no further transformers are used in this scenario. The transport passes the message with its transformed payload to the Customer Data service. The Customer Data service component queries the master customer database to pull additional data about the customer and updates the invoice with the data. The HTTP transport uses the outbound router configuration to determine that it must now dispatch the message to . The HTTP transport uses the inbound router configuration of the Inventory Verification service to receive the message and pass it to the service component. The service component updates the invoice with an ID code of the warehouse that has all the items on the invoice in stock. The outbound endpoint specifies a JMS address, so the JMS transport dispatches the message to the order fulfillment application, which picks up orders on that address.5、整合Mule ESB 到你的环境中 Mule ESB also supports other topologies beyond ESB, including pipeline, peer network, client/server, hub-and-spoke, and more. These topologies can be mixed and matched in an enterprise service network to model complex enterprise messaging and service requirements, as shown in the following illustration. 通过网络你可以有多个分布式的Mule ESB实例,如下图所示: Mule ESB可以安装在Apache Tomcat、BEA WebLogic、IBM WebSphere、Oracle Application Server、SunOne、Geronimo、JBoss等WEB或应用服务器上。6、管理Mule ESB用Management Console来管理部署Management Console是Mule ESB 企业版的功能,可以提供集成日志、应用的配置和服务事件的跟踪。它能探测到Mule ESB服务器和相关软硬件的状态,并能报告事件的实时和历史详情。用Service Registry来控制基础设施Service registry是Mule ESB 企业版的功能,基于开源产品Mule Galaxy project开发,能够帮助你得到整个基础设施的控制权,其主要功能如下:l 注册:自动的探测和显示服务之间的依赖并管理服务的生命周期。l 知识库: 存储和管理重要的文件(Mule 配置文件,Web Service框架,和其他重要文件); 提供版本管理和协作意见(collaborative comments); 允许你通过Atom Publishing Protocol用浏览器发布文件。l 统治(Governance):提供一个中心控制节点用于管理和遵从策略,确保你的SOA 符合公司的策略。用JMX来监控Mule实例JMX是一种简单但标准的管理应用、设备、服务和其他资源的方式,你可以使用它监控和管理资源的创建、安装和执行,也可以使用它监控和管理JAVA虚拟机。7、与Mule ESB兼容的技术操作系统l Linuxl Windowsl Solarisl AIXl HP-UXl Mac OS X应用服务器l Standalonel Tomcat l WebLogic l WebSphere l Geronimo l JBoss l Jetty l Resin容器l EJB 3l jBPMl SpringJMS服务器l ActiveMQ l FioranoMQ l JBossMQ l OpenJMS l OpenMQl Oracle AQl SeeBeyondl SonicMQl Sun JMS Gridl SwiftMQl TIBCO EMSl WebLogic JMS开发工具l Antl Data Mapper (Eclipse IDE, Oakland)l Eclipsel Japexl Mavenl Mule IDEl ProfilerTransportsl Abdera l Amazon SQS l Axis l BPM l CICS CTG l CXF l Email l FTP l Hibernate l HTTP/S l IMAP/S l JCR l JDBC l Jersey l Jetty/Jetty SSL l JMS l LDAP l Multicast l POP3/Sl Quartzl Restletl RMIl SalesForcel SAPl Servletl SMTP/Sl SOAPl STDIOl TCPl UDPl VMl XMPPl WSDL安全l WS-Securityl Acegil Jaasl PGPl Spring Security数据库l Derbyl MySQLl OracleWeb Service技术l Axisl Atoml CXFl .NET Web Servcesl RESTl SOAPl WS-Addressingl WS-Policyl WS-Securityl WS-I BasicProfilel WS-I SecurityProfilel WSDL语言l Groovyl Javal JavaScriptl Jaxenl JRubyl JXPathl Jython (Python)l OGNLl RegExl SXCl XPathl XQuery数据格式l Atoml Base 64 encodedl Byte arraysl CSVl EDIl Encryptedl GZIPl Hex stringsl HTML / XHTMLl Java objectsl JAXBl JSONl Streamingl Stringsl XHTMLl XMLl XML entity encoded部署技术l ESBl Client/Serverl Peer-to-Peerl Enterprise Service Networkl Hub and Spokel Pipeline事件处理l Asynchronousl Routing Patternsl SEDAl Streamingl Synchronous8、总结 Mule ESB provides a messaging framework that enables exchange of data among applications. The application functionality is wrapped as a service, which includes a service component (the business logic that processes the data), routers (which use endpoints to specify where to send the message), and other configuration settings. Transports carry the messages on different channels from service to service, and transformers convert the messages and data as needed along the way. Mule ESB is not a replacement for existing application frameworks. Instead, Mule ESB leverages many open source projects such as Apache CXF, Spring, and ActiveMQ and fills a void in enterprise Java development where an application requires complex interactions with a variety of systems on a variety of platforms. Mule ESB makes light work of wiring systems together in a robust, decoupled environment with little to no code and provides the necessary support to route, transport, and transform data to and from these systems.