欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-17 19:31:12
...

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是一个输出组件,如图:Mule ESB 开发实例基本概念介绍
            
    
    博客分类: ESB MuleesbflowMule MessageEndpoint 

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

Mule ESB 开发实例基本概念介绍
            
    
    博客分类: ESB MuleesbflowMule MessageEndpoint 

这里有五个选项标签,

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。这就构成了一个最基本的流。这里没有定义连接器,系统会提供一个默认的给它。