`
cake918
  • 浏览: 22910 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Mule ESB浅析5——基本配置

    博客分类:
  • SOA
 
阅读更多
主配置文件: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]可以提取消息的内容。默认调用函数的返回值会设置为muleMessagepayload,包括组件调用,转换器调用等。如果返回值的类型为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 itselfinclude serviceNamemodelNmaeinboundEndpointserverIdclusterIddomainId, 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 -esb 源码

    `mule-spring-configuration.dtd`和`mule-configuration.dtd`是Mule ESB的XML配置文件的DTD(文档类型定义),它们规定了XML配置文件的结构和元素。Spring是Mule ESB的核心组件之一,负责管理对象的生命周期和依赖...

    Mule ESB手册-中文版

    组件是Mule ESB流程中的基本构建块,用于执行特定的操作。文档中提到了Java组件、显示组件(EchoComponent)、日志组件(Logger)、REST组件、SOAP组件等。每个组件都具备特定的功能,用于处理消息。 6. 转换器...

    MuleESB帮助文档

    《Mule ESB详解——构建企业级集成解决方案》 Mule ESB,全称为Mule Enterprise Service Bus,是一款强大的开源企业服务总线,用于构建灵活、可扩展的企业级集成解决方案。Mule ESB的核心功能是作为不同应用系统...

    MuleEsb开源框架简介.pdf

    Mule ESB 中的一些基本概念: 1. Model:表示托管各个服务的运行时环境。 2. Service:是用来处理服务请求的基本单位,它调用各个组件进行服务请求的处理。 3. Transport:管理消息的接收和发送,数据转换的过程也...

    mule IDE (mule ESB)

    Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...

    MuleESB_3.0_中文教程

    1. **流与组件**:流是Mule ESB中的基本构造单元,用于定义数据的处理路径。组件则是在流中执行特定任务的逻辑实体,如变换、过滤或路由。 2. **连接器**:连接器负责与外部系统通信,如数据库、文件系统、Web服务...

    MuleESB3.0中文教程

    ### MuleESB3.0中文教程知识点梳理 #### 一、Mule ESB 3.0概述 - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise ...

    mule esb 的简单介绍

    5. **灵活的部署结构**:Mule ESB提供了多种部署拓扑,包括Client/Server、P2P(对等)、ESB(企业服务总线)和Enterprise Service Network,适应不同的企业需求。 6. **与Spring框架的集成**:Mule ESB可以作为ESB...

    mule ESB 3 user guider

    总结来说,《Mule ESB 3用户指南》为用户提供了一个全面的、步骤详细的、实践导向的指导,从基础的配置、服务集成到开发、测试、文档编写和云服务集成,覆盖了使用Mule ESB进行企业级集成应用开发的各个阶段。

    mule esb cookbook 随书源码

    1. **基础配置**:如何设置Mule项目,创建基本的Flow,以及配置连接器。 2. **消息转换**:如何处理数据格式转换,如XML到JSON,或 vice versa。 3. **路由与过滤**:如何根据条件路由消息,以及使用过滤器选择处理...

    mule esb开发手册

    下面将从配置、服务、消息模式、端点、云连接以及构建块等方面,深入解析 Mule ESB 的核心概念和技术要点。 ### 关于 XML 配置文件 在 Mule ESB 中,XML 配置文件是定义应用程序行为的关键。它包含了组件、连接器...

    mule esb 项目 例子 入门

    Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,它帮助企业将不同的系统、应用程序和服务连接在一起,实现数据的高效流转。本教程将带您入门Mule ESB项目,通过实例学习其核心概念和...

    ESB原理及Mule ESB实践

    4. **Mule ESB的安装与配置** - MuleESB有两个版本:社区版和企业版。社区版免费,适合初学者和小型项目;企业版提供了更多高级特性和支持服务,适合大型企业和复杂项目。 - 下载并安装MuleESB后,可以通过Mule ...

    Mule ESB开发工具以及相匹配的英文手册和中文手册(翻译狗充值翻译)

    5. **安全与监控**:涵盖了Mule ESB的安全特性,如SSL/TLS加密,以及如何通过Mule Management Console进行应用监控。 6. **API生命周期管理**:如果涉及到Anypoint Platform,可能会介绍API的设计、测试、部署和...

    MULE ESB-4.1企业版运行环境

    5. **部署流程**:将开发的Mule应用解压并放入“apps”目录后,MULE ESB会在启动时自动检测并加载这些应用。通过管理控制台或者命令行工具,可以对应用进行启动、停止、重启等操作。 6. **企业特性**:MULE ESB企业...

    Mule ESB应用部署

    Mule ESB应用部署 Mule ESB应用的目录结构,配置文件说明

    MULE ESB-4.1社区办运行环境

    MULE ESB-4.1社区版是Mulesoft为开发者提供的免费版本,它包含了基本的ESB功能,适合学习、开发和小规模项目部署。 在MULE ESB-4.1社区版中,主要包含以下几个关键组件和概念: 1. **AnyPoint Studio**: AnyPoint ...

    mule esb mule esb打包手册文档

    Mule ESB通过使用XML或Java配置文件定义和部署业务逻辑,使开发者能够快速创建、部署和管理集成解决方案。 2. **打包基础** 在Mule ESB中,应用通常被打包为一个可部署的Mule Application Archive (Mule WAR or ...

Global site tag (gtag.js) - Google Analytics