<spring:beans>创建spring bean与mule创建的对象一起放在mule的注册信息里。
<spring:beans>
<spring:bean name="globalCache" class="com.mycompany.utils.LRUCache" >
<spring:property name="maxItems" value="200"/>
</spring:bean>
</spring:beans>
<spring:property>mule创建的对象可以spring的属性对象
<custom-processor class="com.mycompany.utils.CustomerClassChecker">
<spring:property name="highPriorities">
<spring:list>
<spring:value>Gold</spring:value>
<spring:value>Platinum</spring:value>
<spring:value>Executive</spring:value>
</spring:list>
</spring:property>
</custom-processor>
mule可以使用spring属性
<spring:beans>
<context:property-placeholder
location="classpath:my-mule-app.properties,
classpath:my-mule-app-override.properties" />
</spring:beans>
<http:endpoint name="ProtectedWebResource"
user="${web.rsc.user}"
password="${web.rsc.password}"
host="${web.rsc.host}"
port="80"
path="path/to/resource" />
Properties file:
web.rsc.user=alice
web.rsc.password=s3cr3t
web.rsc.host=www.acme.com
Connectors
mule具体的传输对象
mule endpoint可以指定connectors这样endpoint与connector分离非常灵活
endpoint只能有一个connector
如果endpoint没指定connector mule将会为其创建connector
<vm:connector name="persistentConnector">
<vm:queueProfile persistent="true" />
</vm:connector>
<file:connector name="fileConnector"
pollingFrequency="1000" moveToDirectory="/tmp/test-data/out" />
Endpoints
mule的一个对象可以读取信息或写入信息,其中的属性定义怎样处理消息
<vm:endpoint name="in" address="vm://in" connector-ref="persistentConnector" />
<http:endpoint name="in" host="localhost" port="8080" path = "services/orders" />
<endpoint name="inFiles" address="file://c:/Orders" />
Transformers
转换当前mule信息
<json:json-to-object-transformer
name="jsonToFruitCollection" returnClass="org.mule.module.json.transformers.FruitCollection">
<json:deserialization-mixin
mixinClass="org.mule.module.json.transformers.OrangeMixin" targetClass="org.mule.tck.testmodels.fruit.Orange"/>
</json:json-to-object-transformer>
<message-properties-transformer name="SetInvocationProperty" scope="invocation">
<add-message-property key="processed" value="yes" />
</message-properties-transformer>
Filters
过滤信息是否被处理
<wildcard-filter pattern="* header received"/>
只有匹配指定的pattern的信息才被处理
<mxml:is-xml-filter/>
只处理xml
<message-filter onUnaccepted="deadLetterQueue"> ❶
<wildcard-filter pattern="* header received"/>
</message-filter>
<message-filter throwOnUnaccepted="true"> ❷
<mxml:is-xml-filter/>
</message-filter>
可以嵌套
<or-filter>
<wildcard-filter pattern="*priority:1*"/>
<and-filter>
<not-filter>
<wildcard-filter pattern="*region:Canada*"/>
</not-filter>
<wildcard-filter pattern="*priority:2*"/>
</and-filter>
</or-filter>
嵌套加入条件
Expressions
mule表达式,可以用来判断或影响mule的行为
<expression-filter evaluator="header" expression="my-header!=null"/>
在值中利用表达式的值#[evaluator:expression]
<message-properties-transformer>
<add-message-property name="GUID" value="#[string:#[xpath:/msg/header/ID]-#[xpath:/msg/body/@ref]]"/>
</message-properties-transformer>
Names and References
用于指定全局对象并且复用
vm:endpoint name="in" address="vm://in" connector-ref="persistentConnector" />
<expression-filter name=checkMyHeader" evaluator="header" expression="my-header!
<message-properties-transformer name="SetInvocationProperty" scope="invocation">
<add-message-property key="processed" value="yes" />
</message-properties-transformer>
<flow name="useReferences">
<vm:inbound-endpoint ref="in"/>
<filter ref="checkSetInvocationPropertyMyHeader"/>
<transformer ref=""/>
</flow>
Flows
最基本的mule处理单元,开始于一个inbound endpoint接着是一系列的处理与可选择的outbound endpoint
<flow name="acceptAndProcessOrder">
<http:inbound-endpoint ref="in"/> ❶
<byte-array-to-string-transformer/> ❷
<jdbc:outbound-endpoint ref="getOrdersById" exchange-pattern="request-response"/> ❸
<mxml:object-to-xml-transformer/> ❹
<expression-filter evaluator="xpath" expression="/status = 'ready'/>❺
<logger level="DEBUG" message="fetched orders: #[payload]"/> ❻
<splitter evaluator="xpath" expression="/order"/> ➐
<enricher> ❽
<authorize:authorization-and-capture amount="#[xpath:/amount]" ❾
cardNumber="#[xpath:/card/number]"
expDate="#[xpath:/card/expire]" />
<enrich target="#[variable:PaymentSuccess]" source="#[bean:responseCode]"/>
</enricher>
<message-properties-transformer scope=:invocation"> ❶❶
<add-message-property key"user-email-address" value="[xpath:/user/email]"/>
</message-properties-transformer>
<component class="org.mycompany.OrderPreProcessor"/> ❶❷
<flow-ref name="processOrder"/> ❶❸
<smtp:outbound-endpoint subject="Your order has been processed" to="#[header:INVOCATION:user-email-address]/> ❶❹
<default-exception-strategy> ❶❺
<processor-chain> ❶❻
<object-to-string-transformer/> ❶➐
<jms:outbound-endpoint ref="order-processing-errors"/> ❶❽
</processor-chain/>
</default-exception-strategy>
</flow>
Routers
消息路由
Components
mule信息处理者,默认是java实现,可以为其他语言
<component class="org.mycompany.OrderPreProcessor"> ❶
<entry-point-resolver-set>
<method-entry-point-resolver>
<include-entry-point method="preProcessXMLOrder" />
<include-entry-point method="preProcessTextOorder" />
</method-entry-point-resolver>
<reflection-entry-point-resolver/>
</entry-point-resolver-set>
</component>
<component class="org.mycompany.OrderPreProcessor"> ❷
<property-entry-point-resolver property="methodToCall"/>
</component>
<component class="org.mycompany.generateDefaultOrder"> ❸
<no-arguments-entry-point-resolver>
<include-entry-point method="generate"/>
</no-arguments-entry-point-resolver>
</component>
Cloud Connectors
调用云服务
Processor Chain
信息处理链
Sub-flow
调用其他flow的flow
Bridge
连接inbound endpoint与outbound endpoint
<pattern:bridge name="queue-to-topic" ❶
transacted="true"
inboundAddress="jms://myQueue"
outboundAddress="jms://topic:myTopic" />
<pattern:bridge name="transforming-bridge" ❷
inboundAddress="vm://transforming-bridge.in"
transformer-refs="byte-array-to-string"
responseTransformer-refs="string-to-byte-array"
outboundAddress="vm://echo-service.in" />
Simple Service
引用其他component提供服务
<pattern:simple-service name="echo-service" ❶
endpoint-ref="echo-service-channel"
component-class="com.mycompany.EchoComponent" />
<pattern:simple-service name="weather-forecaster-ws" ❷
address="http://localhost:6099/weather-forecast"
component-class="com.myompany.WeatherForecaster"
type="jax-ws" />
Web service proxy
创建一个web service 代理
<pattern:web-service-proxy name="weather-forecast-ws-proxy"
inboundAddress="http://localhost:8090/weather-forecast"
outboundAddress="http://server1:6090/weather-forecast"
wsdlLocation="http://server1:6090/weather-forecast?wsdl" />
分享到:
相关推荐
#### 一、Mule配置文件结构概述 Mule ESB是一种集成平台,用于构建连接不同系统和服务的应用程序。Mule的配置文件采用XML格式,组织成一棵XML元素树,其中包含了对服务、路由、转换器等关键组件的定义。 #### 二、...
`mule-spring-configuration.dtd`和`mule-configuration.dtd`是Mule ESB的XML配置文件的DTD(文档类型定义),它们规定了XML配置文件的结构和元素。Spring是Mule ESB的核心组件之一,负责管理对象的生命周期和依赖...
配置文件中的关键元素包括连接器配置(如SystemStreamConnector),属性设置(如命名和类型),以及服务定义。配置文件还包含了描述和版本信息,这对于理解和维护配置至关重要。 通过以上步骤,初学者可以了解Mule...
3. **创建配置文件**:配置文件是 Mule 应用的核心组成部分,它定义了应用的结构、路由逻辑以及其他配置细节。使用 Mule IDE 可以方便地创建和编辑配置文件。 4. **使用 Eclipse 工具添加元素**:Mule IDE 集成了 ...
通过这些实例,我们可以学习如何定义Mule flows,理解Mule配置文件(通常为.mule或.xml文件)的结构,以及如何处理不同类型的连接器和组件。 在"www.pudn.com.txt"文件中,可能包含了一些额外的资料或者说明,例如...
1. **关于 XML 配置文件**:这一章节重点讲述了 Mule 的 XML 配置文件的基本结构和语法。通过这个部分的学习,开发者能够掌握如何在 XML 文件中定义不同的组件和服务。 - **XML 文件结构**:介绍 XML 文件的基本...
全局配置部分讲解了如何创建和管理全局元素,以及如何配置云连接器。 12. 导入和导出项目 介绍了如何将现有项目导入到Mule Studio,以及如何将Mule项目导出到MuleiON云平台或导出为发布文件。 13. Mule Studio ...
每个示例通常包含一个或多个Mule应用配置文件(`.mule`或`.xml`),这些文件定义了端点、数据流和其他组件。 通过分析和运行这些示例,你可以深入理解Mule的工作方式,掌握如何创建和部署自己的Mule应用。记住,...
7. `configuration-builders.properties`:这是Mule2的配置构建器属性文件,定义了如何处理和解析配置文件的规则,可能包括自定义的配置元素或解析策略。 8. `openejb.properties`:OpenEJB的额外配置,可能包含了...
- 学习 Mule 的配置文件语法,理解不同元素的作用。 - 探索 Mule 提供的各种连接器和适配器。 - 实践更多复杂的集成场景,如数据库集成、Web 服务调用等。 - 加入 Mule 社区,参与讨论,分享经验。 通过以上的介绍...
这一部分提供了一个实际的 Mule 配置文件示例,展示了如何组合上述所有元素来构建一个完整的 Mule 应用程序。 #### 第二章:路由器及其路由模式 **路由模式 (Routing Patterns)** 路由模式是设计集成解决方案时...
- **Schema位置**:Mule ESB使用XSD schema来验证配置文件的有效性,确保配置文件符合规范。 #### 配置的模块化 Mule ESB支持配置的模块化,使得大型项目的配置更加灵活和可维护: - **独立配置**:每个Mule应用...
用户指南的入门部分将介绍Mule配置的基础知识,包括XML配置文件的结构和关键元素,这为后续的深入学习打下基础。 2. **流程、模式与服务的选择**: 在Mule中,可以使用flows、patterns和服务来组织和执行业务逻辑...
Mule 支持将配置文件分割成多个独立的部分,并且可以通过继承和导入机制来组合它们。 - **2.3.1 独立配置**:独立配置文件包含特定的服务或功能。 - **2.3.2 继承配置**:允许子配置文件继承父配置文件中的设置。 -...
3. **Mule 应用程序结构**:讲解了Mule应用的基本元素,如Flow、Sub-flow、Connector、Transformer等,以及它们在处理数据流中的作用。 4. **Mule 连接器和数据转换**:详述了Mule提供的各种连接器,如HTTP、JDBC、...
- **mule-config.xml**:这是必需的配置文件,定义了 Mule 应用的服务编排逻辑。如果有多个编排 XML 文件,则需要创建 `mule-deploy.properties` 文件来指定编排文件名称。 #### Mule ESB 编排原则 Mule ESB 的...
全局配置部分讲述了如何在MuleStudio中创建和配置全局元素,这对于需要在多个项目或流程中使用相同配置的情况非常有用。 此外,手册还介绍了如何将现有的项目导入到MuleStudio,以及如何从MuleStudio中导出项目。这...
配置文件通常包含对连接器、处理器、路由规则等元素的定义。此外,Mule 还支持使用 Java 配置,这为开发者提供了更大的灵活性和控制力。 **3. 通过 Mule 发送与接收数据** Mule 支持多种方式发送和接收数据,如 ...