主配置文件:mule-config.xml <?xml version="1.0" encoding="UTF-8"?> <mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:jms="http://www.mulesoft.org/schema/mule/jms" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:vm="http://www.mulesoft.org/schema/mule/vm" xmlns:smtp="http://www.mulesoft.org/schema/mule/smtp" xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc" xmlns:spring="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://www.mulesoft.org/schema/mule/core schema/mule/core/mule.xsd http://www.mulesoft.org/schema/mule/http schema/mule/http/3.3/mule-http.xsd http://www.mulesoft.org/schema/mule/jms schema/mule/jms/mule-jms.xsd http://www.mulesoft.org/schema/mule/jdbc schema/mule/jdbc/mule-jdbc.xsd http://www.mulesoft.org/schema/mule/smtp schema/mule/smtp/mule-smtp.xsd http://www.mulesoft.org/schema/mule/scripting schema/mule/scripting/mule-scripting.xsd http://www.mulesoft.org/schema/mule/vm schema/mule/vm/3.3/mule-vm.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <description> This configuration uses an HTTP endpoint to receive requests. </description>
1,如上所示,为mule_config.xml的起始内容,这里主要是名字空间的导入,比如我这里需要使用到http ,jms等transport,则需要导入相应的名字空间。这里与spring的配置方式类似,只是增加里一些mule自己定义的元素标签而已。注意这里名字空间是会一直更新的,目前使用的最新版本在3.3目录下。
<http:connector name="httpConnector" enableCookies="true" />
如上所示,我的项目中需要使用到http transport,我这里定义一个对应的connector,该connector可以被多个http的endpoint使用,用于统一管理http输入或者输出。不定义该connector,则mule会自动创建一个默认的connector。另外,如果这里显式创建了一个connector,则不论后面endpoint定义时是否通过conector-ref引用,都会使用该创建好的connector。
<flow name="root" doc:name="root"> <!--入口点监控localhost:8088的任意目录 --> <http:inbound-endpoint address="http://localhost:8088" connector-ref="httpConnector" /> <!--请求经过transformer转换 --> <transformer ref="RequestToMessageTrans" /> <!--转换后的请求送交目标component处理 --> <component> <spring-object bean="ProcessorComponent" /> </component> <!-- 输出为条件选择分支 --> <choice> <when expression="message.outboundProperties['custom-def-property'] =="branch1'"> <flow-ref name="branch1" doc:name="branch1" /> </when> <when expression="message.outboundProperties['custom-def-property'] =="branch2'"> <http:outbound-endpoint address="#[target_url]"/> </when> <otherwise> <logger message="#[payload.address.asString]" level="INFO" doc:name="Logger" /> </otherwise> </choice> <!--异常处理逻辑 --> <choice-exception-strategy> <catch-exception-strategy > ... </catch-exception-strategy> </choice-exception-strategy> </flow>
3,如上所示,此处flow标签内的编排,是实现整个业务逻辑核心。
其中包括了
1)inound-endpoint:监听消息输入,此处监听http的请求。另外也可以同时定义jms等endpoint进行监听。
2)transformer:输入消息转换为内部component可以识别的消息,在消息输出到outbound以及outbound消息返回时,都可以指定相应的transformer。
3)component:处理消息的组件,可以通过class来指定,也可以直接使用spring的bean。
如果一个类中有多个处理函数,且入参相同,则需要通过如下方式指定:
<component> <method-entry-point-resolver> <include-entry-point method="localService"/> </method-entry-point-resolver> <singleton-object class="cake.mule.server.muleServlet" /> </component>
4)outbound-endpoint:消息输出端口,投递到外部服务组件进行处理。
直接访问外部页面时:
<http:outbound-endpoint address="http://localhost:8080/cake/hello.jsp" exchange-pattern="request-response"/>
5)另外,中间还可以增加router,根据不同的消息进行路由,此处使用choice实现;filter(对输入消息根据特定规则进行过滤等。
6)最终通过异常捕获分支来获取mule端处理过程中发生的异常等。
7)消息提取:
这里可以使用mule自定义语言MEL,从message中获取所要的属性或者负载等信息。
<!--[if !supportLists]-->1, <!--[endif]-->#[payload]可以提取消息的内容。默认调用函数的返回值会设置为muleMessage的payload,包括组件调用,转换器调用等。如果返回值的类型为muleMessage,则不会设置该payload。代码实现是可以通过setPayload来修改payload,这里可能被mule重新修改,必须保证函数的返回类型为muleMessage。注意,这里设置的payload的类型不可为简单类型,否则在处理函数查找时,无法识别。
<!--[if !supportLists]-->2, <!--[endif]-->在filter中,通过不同的evaluate,可以采用不同的方法提取相关的字段。建议使用groovy来进行处理。
<!--[if !supportLists]-->3, <!--[endif]-->使用mule提供的表达式,主要在filter中使用,包括,
#[mule:message.headers(foo, bar)] - retrieves two headers foo and bar and returns a Map
#[mule:message.attachments-list(attach1, attach2*)] - retrieves two named attachments in a List. The asterisk on attach2 indicates that it is optional
#[mule:message.headers(all)] - retrieves all headers and returns as a Map
#[mule:message.payload(org.dom4j.Document)] - returns the payload and converts it to an org.dom4j.Document
#[mule:message.correlationId] - returns the correlationId on the message
#[mule:message.map-payload(foo)] - expects a Map payload object and retrieves the property foo from the map
#[mule:context **] - return information about the server itself,include serviceName,modelNmae,inboundEndpoint,serverId,clusterId,domainId, workingDir, homeDir.
#[mule:registry **] - return objects you have written to the registry
8)属性修改,添加等:
<message-properties-transformer> <add-message-property key="GUID" value="#[string:#[xpath:/msg/header/ID]-#[xpath:/msg/body/@ref]]"/> </message-properties-transformer>
9)通过mule-ref嵌套子flow处理流。具体config文件可以使用的标签或属性需要查看对应的名字空间的支持。
mule.properties
自定义属性文件,
如果需要在外部文件中额外单独配置部分属性,则可以通过如下方式导入文件:
<spring:beans>
<context:property-placeholder
location="classpath:../properties/mule.properties" />
</spring:beans>
对应的名字空间为:
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
注意这里classpath对应的是WEB_INF/classes目录,其后的相对目录就是相对于WEB_INF/classes。
Properties文件中都是键值对,形式如下:
mail_domain = localhost
mail_port = 8084
导入以后,可以通过${key_name}来导入对应的值。
Registry-bootstrap.properties
配置启动时加载的组件。
Log4j.porperties
配置日志记录的相关信息。
使用log4j进行日志记录,此时需要配置log4j.properties来指定不同的输出,可以是控制台,文件等;也可以指定记录日志的级别,包括INFO, DEBUG, TRACE, ERROR, WARN。该配置文件放到所创建工程的根目录下,与mule-config.xml同级,从而可以通过在启动时调用PropertyConfigurator.configure( "log4j.properties")来初始化所使用的配置文件。
默认使用的配置文件为%MULE_HOME%/conf/log4j-properties。同时在mule-config.xml中<logger>记录日志的位置与log4j一致。
另外,wrapper.conf中也可以配置默认的日志级别。
Wrapper.conf
配置系统mule的系统属性,当mule作为webapp服务器来使用时,则会使用到这些属性。
此外针对不同的transport可以定义自己的配置文件,如jetty,cxf等。
其他:
如果想要存储执行时的数据,从而可以在多个应用使用,则可以将数据作为一个对象存储到Registry中,其他地方则可以通过MuleContext来访问该Registry中的数据。
<!--EndFragment-->
关于更多的配置使用,请参考所使用的transport以及mule手册。
相关推荐
`mule-spring-configuration.dtd`和`mule-configuration.dtd`是Mule ESB的XML配置文件的DTD(文档类型定义),它们规定了XML配置文件的结构和元素。Spring是Mule ESB的核心组件之一,负责管理对象的生命周期和依赖...
组件是Mule ESB流程中的基本构建块,用于执行特定的操作。文档中提到了Java组件、显示组件(EchoComponent)、日志组件(Logger)、REST组件、SOAP组件等。每个组件都具备特定的功能,用于处理消息。 6. 转换器...
5. **部署流程**:将开发的Mule应用解压并放入“apps”目录后,MULE ESB会在启动时自动检测并加载这些应用。通过管理控制台或者命令行工具,可以对应用进行启动、停止、重启等操作。 6. **企业特性**:MULE ESB企业...
4. **Mule ESB的安装与配置** - MuleESB有两个版本:社区版和企业版。社区版免费,适合初学者和小型项目;企业版提供了更多高级特性和支持服务,适合大型企业和复杂项目。 - 下载并安装MuleESB后,可以通过Mule ...
《Mule ESB详解——构建企业级集成解决方案》 Mule ESB,全称为Mule Enterprise Service Bus,是一款强大的开源企业服务总线,用于构建灵活、可扩展的企业级集成解决方案。Mule ESB的核心功能是作为不同应用系统...
Mule ESB 中的一些基本概念: 1. Model:表示托管各个服务的运行时环境。 2. Service:是用来处理服务请求的基本单位,它调用各个组件进行服务请求的处理。 3. Transport:管理消息的接收和发送,数据转换的过程也...
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
1. **流与组件**:流是Mule ESB中的基本构造单元,用于定义数据的处理路径。组件则是在流中执行特定任务的逻辑实体,如变换、过滤或路由。 2. **连接器**:连接器负责与外部系统通信,如数据库、文件系统、Web服务...
### MuleESB3.0中文教程知识点梳理 #### 一、Mule ESB 3.0概述 - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise ...
5. **灵活的部署结构**:Mule ESB提供了多种部署拓扑,包括Client/Server、P2P(对等)、ESB(企业服务总线)和Enterprise Service Network,适应不同的企业需求。 6. **与Spring框架的集成**:Mule ESB可以作为ESB...
总结来说,《Mule ESB 3用户指南》为用户提供了一个全面的、步骤详细的、实践导向的指导,从基础的配置、服务集成到开发、测试、文档编写和云服务集成,覆盖了使用Mule ESB进行企业级集成应用开发的各个阶段。
1. **基础配置**:如何设置Mule项目,创建基本的Flow,以及配置连接器。 2. **消息转换**:如何处理数据格式转换,如XML到JSON,或 vice versa。 3. **路由与过滤**:如何根据条件路由消息,以及使用过滤器选择处理...
下面将从配置、服务、消息模式、端点、云连接以及构建块等方面,深入解析 Mule ESB 的核心概念和技术要点。 ### 关于 XML 配置文件 在 Mule ESB 中,XML 配置文件是定义应用程序行为的关键。它包含了组件、连接器...
Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,它帮助企业将不同的系统、应用程序和服务连接在一起,实现数据的高效流转。本教程将带您入门Mule ESB项目,通过实例学习其核心概念和...
5. **安全与监控**:涵盖了Mule ESB的安全特性,如SSL/TLS加密,以及如何通过Mule Management Console进行应用监控。 6. **API生命周期管理**:如果涉及到Anypoint Platform,可能会介绍API的设计、测试、部署和...
Mule ESB应用部署 Mule ESB应用的目录结构,配置文件说明
MULE ESB-4.1社区版是Mulesoft为开发者提供的免费版本,它包含了基本的ESB功能,适合学习、开发和小规模项目部署。 在MULE ESB-4.1社区版中,主要包含以下几个关键组件和概念: 1. **AnyPoint Studio**: AnyPoint ...
Mule ESB通过使用XML或Java配置文件定义和部署业务逻辑,使开发者能够快速创建、部署和管理集成解决方案。 2. **打包基础** 在Mule ESB中,应用通常被打包为一个可部署的Mule Application Archive (Mule WAR or ...