`
he91_com
  • 浏览: 401077 次
文章分类
社区版块
存档分类
最新评论

开源ESB平台Mule 基本概念介绍

 
阅读更多

Mule 基本概念

最简单的说来,Mule应用通过若干像乐高积木一样的消息处理器来处理消息,这些处理器组合在一起就是一个我们称之为flow的过程。理解基本的消息结构以及flow体系是理解Mule的关键所在。本质上来讲,每一个Mule flow都包含一系列接收、传输和处理消息的构件(building block)。

本文将首先介绍Mule的flow概念,然后分解流经flow的Mule消息组件。

Mule Flow

在一个flow中,你将若干独立的组件连接在一起来完成消息的接收、处理以及最终的路由。Flow支持同步和异步的子flow,单向以及请求-响应交换模式,以及其它符合体系结构的选项。你可以将很多flow连接在一起来创建一个完整的应用,部署在(on premise?)Mule或其它应用服务器,或者云端。

使用Flow开发

你可以通过两种方法构建一个Muleflow:

  • 直接向一个基于XML的应用配置文件中敲入几行代码
  • 使用Mule Studio的图形接口将组件图标整理为可视化的序列

接下来,你使用Studio附加的图形工具来配置这些有序的构件,当然你也可以直接编辑配置文件中的XML代码来进行配置,或者两者结合着使用。

Flow的剖析

最简单地说,flow是消息处理事件的序列。进入flow中的一条消息可能会流经各种各样的处理器。下面的示图中,Mule通过一个请求-响应入站端点(request-response inbound endpoint)来接收消息,将内容转换成一种新的格式,并在通过消息源返回响应之前,进行业务逻辑处理。


这些构成了flow的基本单元通常被称为构件(在Mule Studio中)或者元素(在单击或Studio的XML配置中)。总的来说,一个构件在Mule Studio中对应一个icon图标——图标则表示一个消息源、处理器或者组件。构件是Mule应用配置文件中一个XML元素的可视化表现形式。

下图所示分别为Mule Studio可视化编辑器中的一个简单的flow及其对应的XML代码。


<?xml version="1.0" encoding="UTF-8"?>
 
<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:http="http://www.mulesoft.org/schema/mule/http" 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.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
 
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/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">
...
</mule>
<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>

Mule处理由外部资源(如事件)初始化的消息。例如,一条消息可以由用户从移动设备出发的一次请求初始化,或者由诸如数据库中的一次数据变更、SaaS应用中一个新的用户ID的创建等事件初始化。

大多数flow中的第一个构件是一个接收器,负责接收新消息并将其放入处理队列。Mule使用一个消息源元素——上例中的入站HTTP端点(inboundHTTP endpoint)——从一个或多个外部源头接收消息,于是触发了一个flow的执行。一个运输机(transport)携带消息在集成与应用层流转使其得到处理。

Mule转换器(transformer)是节点间数据交换的关键,它们允许Mule将消息负载数据(payloaddata)转换为其它应用可以理解的格式。Mule还能够进行消息内容的强化,允许你在处理过程中接收额外的数据附加到消息中。

Mule使用组件(component)来针对特定的业务逻辑(如检查客户与清单数据库)进行末端处理。所以,组件将消息路由给正确的应用(例如一个订单执行系统)。Mule使用一种被称为阶段性事件驱动架构(Staged Event-Driven Architecture,SEDA)的架构进行flow中的异步消息处理这一核心功能。值得一提的是,组件不需要使用任何特定的与Mule相关的代码;它们可以是简单的POJO、Spring的bean,Java bean,Groovy脚本或者包含了处理数据的业务逻辑web service。组件甚至可以是其它语言开发的,例如Python、JavaScript、Ruby和PHP。Mule构件的种类包括了当前最常用的企业集成模式。

Flow还可以包含过滤器、作用域、flow控制、错误处理策略,以及诸多种类的云连接器。更多关于这些种类的flow构件,以及关于它们如何能够被连接起来,为你的应用提供你需要的确切功能的细节,请参阅Mule应用架构

当你配置那些连接到一起组成了你的flow的单独的元素时,你可以使用Mule表达式语言来提取关于消息或者其环境的信息,并且指导Mule基于这些信息做出处理决策。更多关于Mule表达式语言以及在Mule中如何使用表达式的信息,请参阅Mule表达式介绍

更详细的关于消息如何在flow中流转的细节,请参阅理解Mule体系

Mule消息

Mule消息是通过一个或多个flow流经你的应用的数据。它包含两个重要部分:

  • 消息,包含消息的元数据。
  • 消息负载(payload),由你的业务特定的数据组成。

一些Mule消息可能包含第三部分:一个附件。不过,由于附件并不常用,我们在这里将不再赘述。

消息头

Mule消息头包含关于这条消息的元数据。元数据包括属性和变量,提供了关于这条消息的有用信息,帮助其到达目的地。属性和变量使用统一的格式:每一个属性和变量都具有一个name和一个value。name用于在Mule中引用这个属性或变量,value是其中存储的信息。所以,name就像是一扇门的钥匙,value就是门后面的任何东西。

一条消息的头部包含的属性和变量具有特定的域,定义并组织它们如何在消息的整个生命周期中起作用。

属性具有两个主要的域:入站和出站。

  • 入站属性(inbound properties)由消息源自动生成,用户不能设置或者操纵这些属性。
  • 出站属性(outbound properties)可以由用户配置。出站属性是在一个flow的过程中被设置的,并且当消息通过运输机从一个flow的出站端点传递到另个一flow的进站端点的时候,出站属性可以变为入站属性。(注意,如果这条消息是通过flow-ref而不是运输机传递到另一个flow,出站属性仍然是出站属性,而不会被转换为入站属性。)

消息携带的属性信息依据作用域来发送元数据,以便于处理以及避免消息穿过运输机边界时发生错误——无论是进入一个新的flow,或者是被传输到另一个应用。入站属性持有消息源特定的元数据,以防数据格式混乱或者之后消息生命周期发生其它处理事故。出站属性持有类似的元数据,不过该元数据在消息进入flow的时候才有效。出站属性可以被Mule自动设置,也可以通过开发者在flow中插入一个或多个转换器来手动设置。

变量是用户定义的关于消息的元数据。变量具有两个作用于:

  • Flow变量只在当前flow存在。
  • Session变量在同一应用的所有flow中都有效。

变量是关于消息的临时信息片段,意在用于对它进行处理的应用,而不是随消息一起被发送到目的地。所以,变量更有可能被人触发,反之属性更有可能被系统设置和触发。然而,并没有关于如何使用属性和变量的严格规定。简言之,有了这些分别被划分到各自作用域的属性和变量,Mule支持4种共享相同的键/值对结构的元数据。这四种类型有基于它们作用域的不同的应用。

你可以使用Mule表达式语言(Mule Expression Language,MEL)来设置、触发和操纵出站属性,flow变量以及session变量。

消息负载

消息负载是Mule消息最重要的部分,因为它是你通过Mule应用发送的数据的内容。你可以在消息头使用元数据来传达关于你的消息的信息,或者保护其免受干扰,但是消息的核心——你要传输的数据——是消息最初存在的原因。

然而,负载在流经flow的时候,没有必要保持不变。Muleflow中各种各样的消息处理器都可以在沿途影响负载,设置、丰富它的值,或者将其转换为新的格式。你也可以在flow中使用MEL从负载中提取信息。

原文链接:http://www.mulesoft.org/documentation/display/current/Mule+Concepts

分享到:
评论

相关推荐

    MuleEsb开源框架简介.pdf

    Mule ESB 中的一些基本概念: 1. Model:表示托管各个服务的运行时环境。 2. Service:是用来处理服务请求的基本单位,它调用各个组件进行服务请求的处理。 3. Transport:管理消息的接收和发送,数据转换的过程也...

    ESB开源系统mule

    开源ESB框架 Mule 2增加了基于Schema的spring xml配置,用于集成传统的web应用。表达式赋值被内建在运行时的消息传递中,因此头信息,Xquery或是其他的测试可以很容易的完成,不需要新建POJO或是这些活动转换器。

    mule -esb 源码

    Mule ESB(Enterprise Service Bus,企业服务总线)是一款开源的集成平台,旨在简化企业级应用之间的数据交互。本文将围绕Mule ESB的源码进行深入探讨,揭示其核心设计理念与工作原理。 首先,`logging.conf`是日志...

    ESB原理及Mule ESB实践

    **Mule ESB**是一个基于Java的开源集成平台,专注于为企业提供高性能且易于使用的集成解决方案。Mule的设计理念源自于EIP(Enterprise Integration Patterns),并且支持广泛的传输协议。 1. **Mule ESB组成结构** ...

    esb-mule系统设计

    **ESB(企业服务总线)** ...总之,"esb-mule系统设计"的学习资料涵盖了ESB的基本概念、MULE ESB的特性和使用、SOA架构的优势,以及MULE与SPRING的整合。通过深入学习和实践,你将能够构建高效的企业服务集成解决方案。

    MuleEsb开源框架简介

    #### 四、Mule ESB的基本概念 Mule ESB的运作基于一系列核心概念: 1. **Model**:表示运行时环境,用于托管服务。 2. **Service**:是处理服务请求的基本单元,协调组件进行服务请求处理。 3. **Transport**:...

    开源ESB实践

    书中详细介绍了两种主流的开源ESB产品:Mule和ServiceMix。Mule是基于Java的轻量级ESB产品,它支持多种传输协议和数据格式,并通过插件架构提供了高度的可定制性。Mule的设计目标是易于使用、配置灵活,并且能够快速...

    开源ESB in Action(中文)

    - **Mule**:Mule是一个非常成熟的开源ESB解决方案,以其灵活性和可扩展性著称。Mule支持多种协议和数据格式,能够轻松地与其他系统和服务集成。 - **Apache ServiceMix**:Apache ServiceMix是另一个强大的开源...

    EIP经典案例ESB实践之Mule实现.rar_eip_esb_mule_mule esb

    Mule ESB是MuleSoft公司推出的一款开源企业服务总线软件,它是EIP的一种实现方式。Mule ESB以其高效、灵活和易于使用的特性,被广泛应用于各种集成项目中。Mule ESB支持多种协议和标准,如HTTP、JMS、FTP、SOAP、...

    ESB-Mule开源文档(PDF)

    ### ESB-Mule开源文档知识点概述 #### 一、引言 Mule 是一款非常流行的集成平台,由 MuleSoft 开发,它提供了一个企业级的服务总线 (Enterprise Service Bus, ESB) 和一个用于构建服务导向架构 (Service-Oriented ...

    mule esb 的简单介绍

    Mule ESB,全称Mule Enterprise Service Bus,是一个开源的企业服务总线系统,旨在促进不同应用程序和服务之间的数据交换和集成。Mule的核心设计是基于轻量级的Java平台,尤其是J2EE 1.4标准,使得它能够在各种企业...

    MuleESB帮助文档

    对于初学者,建议首先通过官方文档了解Mule ESB的基本概念和工作原理,然后使用Anypoint Studio实践创建简单的集成项目。随着经验的积累,逐步掌握高级功能,如流处理、错误处理和性能优化。 总结来说,Mule ESB是...

    浅析主流商业和开源ESB

    对商业、开源企业服务总线产品进行比较: ... 介绍了主流商业和开源ESB的发展趋势、可借鉴的地方和其缺点。 主要介绍: Oracle Service Bus WebSphere Message Broker Mule ServiceMix/FUSE ESB Synapse/WSO2 ESB

    MuleESB_3.0_中文教程

    Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,专为构建可扩展、灵活和可靠的分布式应用程序而设计。Mule ESB 3.0是该平台的一个重要版本,提供了许多改进和新特性,使得它在处理企业...

    mule esb cookbook 随书源码

    《Mule ESB Cookbook随书源码》是一个与Mule ESB相关的实践指南,它包含了大量实例代码,旨在帮助读者深入理解和应用Mule ESB这一开源企业服务总线(Enterprise Service Bus)。Mule ESB是业界广泛采用的ESB解决方案...

    主流商业ESB产品与Mule产品对比V2.xlsx

    主流的商业ESB和Mule产品的比较,完整的多方面评判各种ESB功能情况。

    MuleESB3.0中文教程

    - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise Integration Patterns)原则构建,支持多种传输协议(如file, FTP, ...

    mule esb 项目 例子 入门

    Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,它帮助企业将不同的系统、应用程序和服务连接在一起,实现数据的高效流转。本教程将带您入门Mule ESB项目,通过实例学习其核心概念和...

    《Open Source ESB in Action》作者谈开源ESB.docx

    Tijs Rademakers指出,开源ESB如Mule ESB具有快速部署、简单配置和丰富的社区支持的优势。与商业ESB相比,开源ESB的安装快速,10分钟内即可拥有一个带有示例的运行环境。对于Java开发者来说,自定义功能的实现更为...

    mule ESB 3 user guider

    Mule ESB是一个开源的中间件平台,用于构建企业级的集成应用。它能够让不同系统、服务和设备之间的数据轻松流动,从而实现各种应用程序和数据源之间的无缝通信。Mule ESB通过插件机制支持多种协议和传输方式,提供了...

Global site tag (gtag.js) - Google Analytics