这篇文章是翻译的,原英文:
http://www.mulesoft.org/documentation/display/current/Content-Based+Routing+Tutorial
在 Basic Studio Tutorial(见我的译文)中,你已经认识了 Mule Studio,并且创建了一个简单的“Hello,World”应用。
HTTP endpoint | 让你的Mule应用程序通过HTTP或HTTPS协议连接到Web资源;在元素板的端点部分找到这个端点 |
Expression Filter | 使用Mule表达式可以过滤消息。可以在元素板的过滤器部分找到这个消息处理器 |
Variable Transformer | 可以在消息中设置一个流程变量,以便在流程的其他地方使用该变量。可以在元素板的转换器部分找到这个消息处理器 |
Choice Router | 根据配置的路由逻辑路由传入的消息;可以在元素板的流程控制部分找到这个处理器 |
Set Payload Transformer | 修改http内容为Hello,World; 在元素板的转换器部分找到这个转换器 |
Logger | 根据mule表达式的值记录日志信息或活动;在元素板的组件部分找个这个组件 |
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP"/>
<expression-filter expression="#[message.payload != '/favicon.ico']" doc:name="Expression"/>
<set-variable variableName="language" value="#[message.inboundProperties['language']]" doc:name="Set Language Variable"/>
按如下所示配置:
<choice doc:name="Choice"> <when expression="#[flowVars['language'] == 'Spanish']"> <set-payload value="Hola!" doc:name="Reply in Spanish"/> </when> <when expression="#[flowVars['language'] == 'French']"> <set-payload value="Bonjour!" doc:name="Reply in French"/> </when> <otherwise> <set-variable variableName="language" value="English" doc:name="Set Language to English"/> <set-payload value="Hello!" doc:name="Reply in English"/> </otherwise> </choice>
按如下配置日志组件:
<logger message="The reply "#[message.payload]" means "hello" in #[flowVars['language']]." level="INFO" doc:name="Logger"/>
请注意,Studio会自动转义引号,按如下内容:
<logger message="The reply "#[message.payload]" means "hello" in #[flowVars['language']]." level="INFO" doc:name="Logger"/>
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd"> <flow name="CBR_TutorialFlow1" doc:name="ChoiceRoutingTutorial"> <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8084" doc:name="HTTP"/> <expression-filter expression="#[message.payload != '/favicon.ico']" doc:name="Expression"/> <set-variable variableName="language" value="#[message.inboundProperties['language']]" doc:name="Set Language Variable"/> <choice doc:name="Choice"> <when expression="#[flowVars['language'] == 'Spanish']"> <set-payload value="Hola!" doc:name="Reply in Spanish"/> </when> <when expression="#[flowVars['language'] == 'French']"> <set-payload value="Bonjour!" doc:name="Reply in French"/> </when> <otherwise> <set-variable variableName="language" value="English" doc:name="Set Language to English"/> <set-payload value="Hello!" doc:name="Reply in English"/> </otherwise> </choice> <logger message="The reply "#[message.payload]" means "hello" in #[flowVars['language']]." level="INFO" doc:name="Logger"/> </flow> </mule>
到此,该应用已经创建并配置完毕,下篇将运行并完善该应用。
忍不住吐槽几句,翻译这活真不是人干的,想翻译准确,真的不容易,不是会几个单词就能解决问题的,还要有很强的技术支撑,这样也不见得能翻译准确。如果英语能力过关,推荐看原著,翻译的东西,总感觉味道有些不一样,放在一起对比,反而觉得英文的原著更有味道些,不得不承认,老外的文档写得很用心,自己任重道远啊。