Mule ESB 开发实例基本概念介绍

1、Flow:

流,也就是消息流是由接收消息,处理消息,为消息选择路径等一系列组件组成的。它是mule中的核心思想,十分重要。以下是一个简单flow的例子以及代码:

 

<flow name="Simple_Example_Flow1" doc:name="Simple_Example_Flow1">

<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" path="kittens"/>

    <set-payload value="Kittens? Kittens!" doc:name="Set Payload"/>

    <echo-component doc:name="Echo"/>

</flow>

 

具体细节后面会有讲的。

流中可以依据功能划分为三大类:

         Message processor(消息处理器):对消息进行加工处理,如filtertransformerrouter等。

         Message source(消息源):flow开始的地方,接收消息进入流中,触发处理器,如:Inbound/Outbound Endpoints

         Component(组件):主要实现一些特殊的功能,mule studio中提供的完成不了的。

2、Mule Message

消息,是通过整个应用程序可能流经很多flow。它有两个重要的组成部分:

         Message header:包含该消息的基本的元数据。元数据是由属性(properties)和变量(variables)组成,元数据可以为我们提供有用的信息,譬如告诉我们这个消息去向哪里。元数据都有一个特定的范围来规定它的生命周期。

属性(properties)的范围有两种:

Inbound properties:在消息源头被创建,不能被用户设置和修改。

Outbound properties:可以被用户配置,outbound属性如果随着一个message从一个Flowoutbound endpoint(出口端)流近另一个FlowInbound endpoint(入口端)可以变成Inbound properties。在一些特殊情况,如新的Flowflow-ref而不是transport的话,范围还是没有改变。

         变量(variables)是用户自定义的元数据,也有两种范围:

                            Flow variables:仅存在当前flow中。

                            Session variables:存在这应用程序中。

         Message payload:是你真正要在应用程序中传输的数据,消息头中的元数据只是起到更好的表明要传输的数据,而payload才是你真正要传输的数据。

工作环境:

Canvas:是用来布局各个组件的,你可以在右上角搜索需要的组件名或者根据分类查找。

下面可以切换三种视图,message flow:就是当前视图、global elements:定义的全局元素、configuration xmlxml编辑的视图。

Package explorerflows文件中存放的.mflow文件,就是canvas中显示的文件。

Outline:缩略图。Console:控制平台。

全局元素:

你可以定义元素为全局的,这样可以在多处调用,定义全局有两种方法,一种在global elements中直接添加一个,选择你要添加的元素以及相应属性。另一种是在xml编辑环境编写。Note:全局元素要有name属性,这样才可以被别处调用。通过<元素名-ref  name=””>标签被调用。

Visual editor(视图编辑)

         中间是画布,用来将各种元素拖拽到这里布局配置,右侧是提供的各个元素,分成了八类,依次是Endpoints, Scopes, Components, Transformers, Filters, Flow control, Error handling, Cloud connectors。如果你想使用哪个元素,直接拖拽到画布上,双击即可以打开配置面板,配置相应属性。

         以下会分开讲各类元素功能以及相应配置,视图编辑和xml编辑在一起讲,最后会有综合在一起的例子。

3、Endpoints(端点):

用来接收和发送数据,负责连接外部资源并发送数据。分为Inbound endpoints输入端点,Outbound endpoints输出端点。端点需要关联一个connector连接器完成输入输出。如果没有配置连接器系统会默认配置一个。

         我们创建一个例子,右侧拖拽一个http端点到画布上,再在filter上搜索echo,找到在components中,拖拽跟http端点放在一起。Echo是一个输出组件,如图:

双击http端点,出现配置面板如图。

这里有五个选项标签,

General中可以配置显示名称,默认为http

信息交换模式,有one-wayrequest-response。单向和请求响应。

Host,port,path等。

Advancedhttp outbound在这里会比inbound多一个是否重定向的选项。

我们什么也不需要配置,直接ok.

右键点击flows文件夹中mflow文件,选择作为mule application程序运行。

在浏览器中打http://localhost:8081/任意字符,回车。就会在浏览器中出现该字符。

看一下xml配置文件:

    <flow name="sudy_muleFlow1" doc:name="sudy_muleFlow1">

        <http:inbound-endpoint exchange-pattern="request-response" host="localhost"

port="8081" doc:name="HTTP"/>

        <echo-component doc:name="Echo"/>

</flow>

首先定义了一个流,命名为sudy_muleFlow1,显示名为sudy_muleFlow1。在流中我们首先定义了一个httpinbound-endpoint,设置了交换模式为请求-响应,主机为localhost,端口号为8081,显示名为HTTP。接着是输出组件echo。这就构成了一个最基本的流。这里没有定义连接器,系统会提供一个默认的给它。

猜你喜欢

转载自teabo.iteye.com/blog/2189741