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>
|
分享到:
相关推荐
- 通过修改“conf/mule-deploy.properties”文件来配置应用属性和连接参数。 - 使用命令行工具或启动脚本(如“bin/mule.bat”或“bin/mule.sh”)启动Mule ESB。 5. **监控与管理**: - Mule ESB 3.9.0提供了一...
该文档是本人查阅国外官网,个人实践撰写60页常用开发技术,可适用于大多数Mule业务开发 ,提供配套视频讲解 ,https://space.bilibili.com/405243872/dynamic,对于付费用户可提供相关源码及安装包文件,bilibili请...
### Mule基本节点解释 #### 一、基本标签与配置结构 Mule 是一款非常强大的企业级集成平台,主要用于构建连接不同的系统和服务的应用程序。在 Mule 的配置文件(通常是 XML 文件)中,包含了多种标签来组织和配置 ...
部署"mule-standalone-3.2.0.zip"的过程相对简单,一般包括解压文件、配置Mule服务器、定义应用和启动服务器几个步骤。在Anypoint Studio中创建并测试完Mule应用后,可以通过Maven打包为war或ear文件,然后部署到...
Mule ESB(Enterprise Service Bus,企业服务总线)是一种开源的企业级集成平台,由...通过解压这个压缩包,你可以得到完整的Mule ESB运行环境,包括所有必要的库、配置文件和启动脚本,便于你在本地进行开发和测试。
关于在tomcat上进行mule多线程数量参数配置
mule-3.8.1-embedded.jar
2. **配置管理**:配置文件位于“conf”目录下,主要包括mule-deploy.properties和mule-server.properties,用于定义应用部署和服务器配置。 3. **应用部署**:将Mule应用打包成.mule或.jar文件,放入“apps”目录...
maven-mule-plugin-1.8.jar
maven-mule-plugin-1.2.jar
Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...
它是基于Java的,但具有更简洁、直观的语法,特别适合于在Mule配置中进行数据操作。本摘要将深入探讨MEL的相关知识点,旨在帮助初级开发人员快速理解和掌握这一强大的工具。 1. **MEL概述** MEL是一种强大而灵活的...
Mule 2.0提供了丰富的路由器和过滤器配置选项,增强了系统的灵活性和可配置性。 ##### 6. 变换器(Transformers) 变换器用于转换消息的格式或内容。Mule 2.0的Transformer配置变得更加灵活,支持更多的转换选项,...
maven-mule-plugin-1.9.jar
maven-mule-plugin-1.7.jar
maven-mule-plugin-1.6.jar
maven-mule-plugin-1.5.jar