1 Mule-config.xml
示例模型:
<mule> <model> <service name="GreeterUMO"> <inbound....> <filtering-router> .... </filtering-router> </inbound> <component.... /> <outbound....> ....... </outbound> <default-service-exception-strategy> ..... </default-service-exception-strategy> </service> <service name="GreeterUMO2" initialState="stopped"> ... </service> </model> </mule> |
1.1 基本标签
Mule配置文件由以下标签组织成一颗XML元素树:
1.1.1 <model>
定义应用程序中的服务;
1.1.2 <service>
配置一个服务;
1.1.3 <description>
服务的描述内容;
1.1.4 <inbound>
配置入站路由,它们的端点以及入站转换器;
1.1.5 <outbound>
配置一个或多个出站路由,它们的端点以及出站转换器;
1.1.6 <async-reply>
配置一个异步应答路由,它用于异步请求/响应消息中;
1.1.7 <exception-strategy>
配置连接器或模型或服务上的错误处理策略;
1.2 配置设置
将服务组件编织成一个应用程序是由配置文件来完成的,Mule的配置设置是由开发人员负责的,它们包括:
1、服务组件的声明;
2、哪个服务上的端点将接收消息;
3、将消息引入到服务组件之前使用哪个转换器;
4、出站端点上的消息下一步改流向哪里;
5、消息的路由信息将其发送到下一个服务组件。
1.3 声明服务组件
1.3.1 <component>
Mule组件是通过指定实施类名配置的,Mule为组件接收的每个消息创建新的类实例,注意是一个特定的Java类而不是函数:
<component class="org.my.ServiceComponentImpl" /> |
1.3.2 <pooled-component>
Mule创建一批组件,共用组件配置,对象工厂创建一个单一的对象实例也可以指定:
<pooled-component class="org.my.ServiceComponentImpl" /> <component> <singleton-object class="org.my.ServiceComponentImpl" /> </component> |
1.3.3 <entry-point-resolver-set/>
Mule可以创建一个入口点分解器基于消息负载情况动态选择调用的函数:
<component class="org.my.PrototypeObjectWithMyLifecycle"> <entry-point-resolver-set> <array-entry-point-resolver /> <callable-entry-point-resolver /> </entry-point-resolver-set> </component> |
1.3.4 <callable-entry-point-resolver>
这个入口点分解器用于组件实现org.mule.api.lifecycle.Callable接口,组件可以实现Callable接口废除一切动态解决方案,并调用接口函数进行替代;
1.3.5 <custom-entry-point-resolver-set>
这个自定义入口点分解器可以和实现了org.mule.api.model.EntryPointResolverSet接口的类一起实施,为了准确地在你的端点上指定函数,你可以在端点上使用函数参数,如:
<ejb:endpoint host="localhost" port="1099" object="SomeService" method="remoteMethod" /> |
1.3.6 <log-component/>
Mule提供了多个简单有用的组件用于测试和初始化原型,如<log-component/>,它将所有接收到的消息输出到控制台中;
1.4 配置端点
1.4.1 <endpoint>
使用它声明一个全局范围的端点,在整个Mule应用程序中都可以使用,在一个服务中,"ref="用于引用全局端点:
<file:endpoint name="fileReader" reverseOrder="true" comparator="org.mule.transport.file.comparator.OlderFirstComparator" />
<model> <service name="Priority1"> <file:inbound-endpoint ref="fileReader" path="/var/prio1" /> ...... </service> <service name="Priority2"> <file:inbound-endpoint ref="fileReader" path="/var/prio2" /> ...... </service> </model> |
1.4.2 <inbound-endpoint>
这是服务组件接收事件的通道,它包括使用的传输器,地址,路径或资源(任何有效的URI):
<inbound-endpoint address="udp://localhost:65432" /> <inbound-endpoint address="jms://test.queue" /> |
1.4.3 <outbound-endpoint>
这个是组件返回的数据被发送出去的通道;
<outbound-endpoint address="smtp://user:secret@smtp.host" /> <outbound-endpoint address="smtp://user:secret@smtp.host" /> |
1.5 配置入站路由
1.5.1 <selective-consumer-router>
这个路由在入站消息上应用一个或多个过滤器,符合要求的消息被转送到组件:
<inbound> <selective-consumer-router> <mulexml:jxpath-filter expression="msg/header/resultcode = 'success'" /> </selective-consumer-router> <forwarding-catch-all-strategy> <jms:endpoint topic="error.topic" /> </forwarding-catch-all-strategy> </inbound> |
1.5.2 <idempotent-receiver-router>
这个路由通过检查入站消息的唯一性消息ID确保服务接收的消息是唯一性的,ID可以使用idExpression属性中定义的表达式生成:
<inbound> <secure-hash-idempotent-receiver-router messageDigestAlgorithm="SHA26"> <simple-text-file-store directory="./idempotent" /> </secure-hash-idempotent-receiver-router> </inbound> |
1.5.3 <secure-hash-idempotent-receiver>
这个路由通过计算消息内容的散列值确保服务接收到的消息的唯一性:
<inbound> <secure-hash-idempotent-receiver-router messageDigestAlgorithm="SHA26"> <simple-text-file-store directory="./idempotent" /> </secure-hash-idempotent-receiver-router> </inbound> |
1.6 配置出站路由
1.6.1 <filtering-router>
这个路由使用过滤器确定消息是否匹配特定的标准;
<outbound matchAll="true"> <filtering-router> <endpoint address="jms://deposit.queue" /> </filtering-router> <filtering-router> <jms:outbound-endpoint queue="large.deposit.queue" /> <mulexml:jxpath-filter expression="deposit/amount >= 100000" /> </filtering-router> </outbound> |
1.6.2 <pass-through-router>
这个路由匹配所有的消息,通过一个配置好的端点发送出去;
<outbound> <pass-through-router> <smtp:outbound-endpoint to="ross@muleumo.org" /> </pass-through-router> </outbound> |
1.6.3 <static-recipient-list-router>
这个路由用于从单个端点发送相同的消息到多个端点,或实施消息属性或有效负载确定的下一个目的地的路由滑动行为;
<outbound> <static-recipient-list-router> <payload-type-filter expectedType="javax.jms.Message" /> <recipients> <spring:value>jms://orders.queue</spring:value> <spring:value>jms://tracking.queue</spring:value> </recipients> </static-recipient-list-router> </outbound> |
1.7 配置传输器和连接器
以为传输器声明一个描述连接信息的端点URI的值:
<rmi:endpoint name="BadType" host="localhost" port="1099" object="MatchingUMO" method="reverseString" /> <jms:inbound-endpoint queue="test.queue" /> <ssl:endpoint name="clientEndpoint" host="localhost" port="60198" synchronous="true" /> <quartz:endpoint name="qEP6" repeatCount="10" repeatInterval="1000" jobName="job" /> |
同样,可以使用<connector>元素定义一个连接器配置,Mule使用标准的组件,如Work Manager高效共享线程资源,并为线程使用提供更多控制,对于错误,你也要象事务行为一样声明一个异常策略:
<vm:connector name="VMConnector"> ... <default-connector-exception-strategy> <vm:outbound-endpoint path="systemErrorHandler" /> </default-connector-exception-strategy> </vm:connector> |
1.8 配置转换器
可以配置一个本地或全局的转换器,本地转换器定义在端点上,而全局转换器是在需要的时候进行引用的,下面的代码定义了两个全局转换器:
<xm:xml-to-object-transformer name="XMLToExceptionBean" returnClass="org.mule.example.errorhandler.ExceptionBean" /> <custom-transformer name="ExceptionBeanToErrorMessage" class="org.mule.example.errorhandler.ExceptionBeanToErrorMessage" returnClass="org.mule.example.errorhandler.ErrorMessage" /> |
1.8.1 <append-string-transformer>
在现有的字符串上追加了一个字符串:
<append-string-transformer name="myAppender" message=" ... that's good to know!" /> |
1.8.2 <xslt-transformer>
通过XSLT处理XML负载:
<mulexml:xslt-transformer name="xslt" xslFile="./conf/xsl/cd-listing.xsl"> <mulexml:context-property key="title" value="#[header:ListTitle]" /> <mulexml:context-property key="rating" value="#[header:ListRating]" /> </mulexml:xslt-transformer> |
相关推荐
`mule-spring-configuration.dtd`和`mule-configuration.dtd`是Mule ESB的XML配置文件的DTD(文档类型定义),它们规定了XML配置文件的结构和元素。Spring是Mule ESB的核心组件之一,负责管理对象的生命周期和依赖...
根据提供的文件内容,以下是关于Mule ESB手册-中文版的知识点: 1. Mule ESB简介 ...通过这些知识点的学习,可以加深对Mule ESB的使用方法的理解,并通过实例加深对ESB概念的理解,对新手来说非常有帮助。
在本篇“Mule ESB 学习笔记(13)CSV数据文件到数据库”中,我们将探讨如何使用Mule ESB(Enterprise Service Bus,企业服务总线)处理CSV(Comma Separated Values,逗号分隔值)数据,并将其有效地导入到数据库中...
9. **版本管理**:升级或维护MULE ESB时,需要注意兼容性问题,同时需要备份现有应用,以免丢失配置或数据。 综上所述,MULE ESB-4.1企业版运行环境是企业级集成和API管理的重要组成部分,它为开发、部署和管理Mule...
### ESB原理及Mule ESB实践 #### ESB(Enterprise Service Bus)原理概述 **ESB**(企业服务总线)是SOA(面向服务架构)架构中的关键组件之一,用于实现服务间的智能集成与管理。其核心作用在于简化不同系统间的...
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...
五、学习和使用Mule ESB "MuleESB3"这个文件名可能指的是Mule ESB的第三个主要版本。在该版本中,用户可以期待更完善的特性和改进。对于初学者,建议首先通过官方文档了解Mule ESB的基本概念和工作原理,然后使用Any...
1. **安装与配置**:教程将引导你完成Mule ESB 3.0的安装,以及如何在Mule Studio中创建新项目。 2. **创建第一个Mule应用**:从简单的HTTP监听器和响应者开始,了解如何定义流和组件。 3. **连接器使用**:学习...
### MuleESB3.0中文教程知识点梳理 #### 一、Mule ESB 3.0概述 - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise ...
Mule ESB应用部署 Mule ESB应用的目录结构,配置文件说明
《Mule ESB 开发手册》是一份详尽的指南,专为希望深入了解并掌握 Mule ESB(Enterprise Service Bus)技术的...通过深入学习和实践,开发者可以充分利用 Mule ESB 的强大功能,实现高效、可靠的企业级集成解决方案。
通过这个源码库,读者可以实际操作这些示例,加深对Mule ESB工作原理的理解,学习如何解决实际问题,从而提升在企业集成项目中的技能。记住,理论知识和实践经验相结合是掌握复杂技术的关键。因此,仔细研究这些源码...
本教程将带您入门Mule ESB项目,通过实例学习其核心概念和操作。 首先,我们需要理解ESB的基本概念。ESB作为一个中间件,它的主要作用是提供一种松耦合的方式,使得各个系统之间可以通过标准接口进行通信,而不是...
总结来说,《Mule ESB 3用户指南》为用户提供了一个全面的、步骤详细的、实践导向的指导,从基础的配置、服务集成到开发、测试、文档编写和云服务集成,覆盖了使用Mule ESB进行企业级集成应用开发的各个阶段。
以下是Mule ESB的一些关键特性和功能的详细解释: 1. **企业消息总线和消息代理**:Mule ESB作为一个消息中间件,提供了一个中央通信平台,允许不同的服务和应用通过消息传递进行交互。这种基于J2EE 1.4的标准使得...
MULE ESB-4.1社区版是Mulesoft为开发者提供的免费版本,它包含了基本的ESB功能,适合学习、开发和小规模项目部署。 在MULE ESB-4.1社区版中,主要包含以下几个关键组件和概念: 1. **AnyPoint Studio**: AnyPoint ...
1. **Mule ESB 架构**:解释了Mule ESB如何作为服务总线工作,包括消息传递、事件驱动架构(EDA)和组件模型。 2. **Anypoint Studio 使用指南**:介绍了如何安装和设置Anypoint Studio,以及如何使用其进行项目...