EnjoyingSoft之Mule ESB开发教程第二篇:Mule ESB基本概念
目录
Mule ESB在众多开源的ESB中处于领先者的地位,MuleSoft公司也作为独角兽,2017年在纽交所上市。我们作为MuleSoft的合作伙伴也有幸参与其中,在六年多的时间里,我们使用Mule ESB实施,包括使用Mule ESB企业版实施,或者在社区版基础上扩展,使用Mule ESB社区版实施,帮助国内众多的企业成功上线SOA项目。
使用Mule ESB的过程中,体会到其快速的开发效率,以及优秀的架构设计。同时也深感国内这块资料非常稀少,所以计划使用8篇文章来写Mule ESB的基础课程系列。
- EnjoyingSoft之Mule ESB开发教程第一篇:初识Mule ESB
- EnjoyingSoft之Mule ESB开发教程第二篇:Mule ESB基本概念
- EnjoyingSoft之Mule ESB开发教程第三篇:Mule message structure - Mule message结构
- EnjoyingSoft之Mule ESB开发教程第四篇:Mule Expression Language - MEL表达式
- EnjoyingSoft之Mule ESB开发教程第五篇:控制消息的流向-数据路由
- EnjoyingSoft之Mule ESB开发教程第六篇:Data Transform - 数据转换
- EnjoyingSoft之Mule ESB开发教程第七篇:SOAP Web Service的消费和创建
- EnjoyingSoft之Mule ESB开发教程第八篇:使用API构建Rest Service
1. 使用Anypoint Studio开发
Anypoint Studio是 MuleSoft提供的基于 Eclipse架构的集成开发环境 (IDE) 。使用Anypoint Studio,程序员可以几分种内轻松地创建出集成化的流程图,并使用图形化转换器来完成数据的映射。这里的映射就是指消息转换,消息转换是ESB很重要的功能。Anypoint Studio的图形化转换器功能非常强大,可以全方面的转换数据,包括数据结构,数据类型,数据内容的转换等。注意,图形化转换器是企业版才有的功能,社区版则需要自行开发,我们在社区版做过类似的图形化转换工具。
Anypoint Studio可以让开发人员用拖拽的方式把连接器(Connectors)、转化器(Transformers)以及其他Processor放到开发环境的画布上,Anypoint Studio会自动把图形化的流程界面转化为后台的XML配置文件。
Anypoint Studio默认集成Mule ESB企业版运行时,我们也可以在Anypoint Studio上集成社区版运行时,具体可参考上一篇文章。
下图是Anypoint Studio的各个区域说明。
包资源浏览器
和Java工程类似,管理工程项目的资源。
画布
主要的可视化开发环境,通过拖拽的方式组织逻辑,定义属性。
工具箱
包括Connector,Processor等开箱即用的组件。
连接探索器
这里可以展示全局的连接器配置属性。
控制台
和Java工程一样,Console输出控制台。

在主界面上有三个Tab页签,其中图形化设计器和XML编辑器是可以互相切换的。所以你可以使用图形化的拖拽开发,熟悉Mule的工程师也可以直接使用XML编辑器来完成工具。需要注意的是,有些属性在图形化界面是无法设定的,这个时候你只能在XML编辑器中完成设定工作。好在XML编辑器也提供代码上下文语法提示,可以方便开发工程师输入XML元素。
Message Flow
图形化设计器页签,在这里可以拖拽组件,编辑组件属性。
Global Elements
全局元素列表页签,所谓全局元素,可以理解成这些元素是全局共享,可以被其他元素所引用。
Configuration XML
点击此页签,切换到XML编辑器。实际上,图形化界面就是对XML代码的渲染。

2. Mule ESB Application Structure - Mule ESB应用程序结构
我们来看一个基于Maven项目,使用典型的archetype构建的应用程序的目录结构,可以看到一般分成src/main/java,src/main/resources,src/test/java,src/test/resources等目录。每个目录的作用Java程序员都很清楚。

我们再来看看Mule ESB Application的结构是什么。从图示可以发现,Mule的应用程序和Java应用程序几乎一致,其中有几个新目录着重介绍一下。
src/main/app
这个目录就是放置Mule的配置文件,也就是Mule Configuration File。打开Mule Configuration File就会开启设计器界面。
src/main/api
这个目录是放置Restful API的定义文件。
src/main/wsdl
这个目录是放置SOAP Webservice的WSDL文件。

3. Mule ESB Application整体构造
我们在上一篇文章已经对Mule ESB Application有了一个初步的认识,总结起来,Mule的应用程序就是由一个或者多个Mule Configuration File组成,每个Mule Configuration File里面可以放置一个或者多个Flow。每一个FLow又是由Connector和Processor等组成。
而Flow是Mule的核心概念,下图展示了Flow的结构。

4. Mule ESB构造元素 - Flow
Mule ESB的应用程序通常是设计用来接收和处理消息。接收消息我们通常使用Connector Source来做,而处理消息通常使用一个或者多个Processor来做。Flow就是用来组织Connector和Processor的组。在一个Flow中,你可以将多个单独的Mule元素链接起来,用来实现接收,处理,过滤,路由消息等功能。
Flow实际就是上图的边框。实际还有Sub Flow的概念,主要用于Flow的公用,这些不展开讲述。
5. Mule ESB构造元素 - Connector
Mule的Connector是其非常优秀的功能,数百个开箱即用Connector可以帮助开发者连接不同的应用。从常见的HTTP,TCP,FTP,LDAP等协议,Hadoop大数据,到大型的商用系统SAP,Oracle,Salesforce,Mule都提供了相应的Connector。

Connector又分成Source Connector(又称为Inbound Connector)和Target Connector(又称为Outbound Connector)。
Source Connector用来接收消息,可以理解成监听器,而Target Connector是用来发送消息的组件。
6. Mule ESB构造元素 - Processor
Mule的Processor包含的内容更广泛,从Studio右侧的工具箱可以看到很多的控件元素,除去上文讲述的Connector,余下的基本都可以归纳到Processor。

Processor大概可以分成几类。
Transformers
可以称作转换器,用来转换消息的类型,结构和内容,比如将XML换成JSON。
Components
组件,可以使用Java或者脚本语言组件,比如JavaScript等。这些组件使用程序语言来描述商业逻辑。
Flow Control
控制消息的流向,比如消息的路由,消息的分割聚合等。
Scopes
通过Scope,我们可以改变内部Processor的行为特征。
Filters
过滤消息,我们可以定义规则过滤非法的消息。
下图总结了本文所讲述的内容,该Flow包含了上述所说的几类Processor。

本文已经讲述了Mule的基本概念,包括Mule ESB Application,Flow,Connector,Processor等。贯穿其中的就是消息,也就是Mule Message。Mule Message是Mule开发中非常重要的概念,下篇文章将着重讲解Mule Message。
本文同步发文于EnjoyingSoft Blogs ,CSDN,简书
访问EnjoyingSoft 网站,获取更多Mule ESB 社区版 实施帮助。
欢迎转载,但必须保留原文和此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
EnjoyingSoft之Mule ESB开发教程第二篇:Mule ESB基本概念的更多相关文章
- EnjoyingSoft之Mule ESB开发教程第一篇:初识Mule ESB
目录 1. Mule ESB基本介绍 2. Mule ESB社区版和企业版 3. Mule ESB常用场景 4. Mule ESB软件安装 客户端安装 服务端安装 5. 第一个Mule ESB应用- ...
- EnjoyingSoft之Mule ESB开发教程系列第五篇:控制消息的流向-数据路由
目录 1. 使用场景 2. 基于消息头的路由 2.1 使用JSON提交订单的消息 2.2 使用XML提交订单的消息 2.3 使用Choice组件判断订单格式 3. 基于消息内容的路由 4. 其他控制流 ...
- EnjoyingSoft之Mule ESB开发教程第三篇:Mule message structure - Mule message结构
目录 1. 探索Mule Message结构 2. Mule Message的Payload 3. Mule Message的Property 4. Mule Message的Attachment 5 ...
- EnjoyingSoft之Mule ESB开发教程第四篇:Mule Expression Language - MEL表达式
目录 1. MEL的优势 2. MEL的使用场景 3. MEL的示例 4. MEL的上下文对象 5. MEL的Variable 6. MEL访问属性 7. MEL操作符 本篇主要介绍Mule表达式语言 ...
- EnjoyingSoft之Mule ESB开发教程第六篇:Data Transform - 数据转换
目录 1. 数据转换概念 2. 数据智能感知 - DataSense 3. 简单数据转换组件 3.1 Object to JSON 3.2 JSON to XML 3.3 JSON to Object ...
- Python开发【第二篇】:初识Python
Python开发[第二篇]:初识Python Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...
- .Net魔法堂:史上最全的ActiveX开发教程——部署篇
一.前言 接<.Net魔法堂:史上最全的ActiveX开发教程——发布篇>,后我们继续来部署吧! 二. 挽起衣袖来部署 ActiveX的部署其实就是客户端安装ActiveX组件,对未签 ...
- .Net魔法堂:史上最全的ActiveX开发教程——发布篇
一. 前言 接着上一篇<.Net魔法堂:史上最全的ActiveX开发教程——开发篇>,本篇讲述如何发布我们的ActiveX. 二.废话少讲,马上看步骤! 1. 打包 C#开发的Activ ...
- Spring cloud系列教程第二篇:支付项目父工程图文搭建
Spring cloud系列教程第二篇:支付项目父工程图文搭建 在讲解spring cloud相关的技术的时候,咱们就模拟订单支付这个流程来讲讲 在这个支付模块微服务搭建过程中,上面的这些技术,都会融 ...
随机推荐
- String内存结构
var s: AnsiString; begin s := '1234567890'; showmessage(s); end; 变量s的内存结构为A8 03 01 00 FF FF FF FF 0A ...
- Win8 Metro(C#)数字图像处理--2.74图像凸包计算
原文:Win8 Metro(C#)数字图像处理--2.74图像凸包计算 /// <summary> /// Convex Hull compute. /// </summary> ...
- C#如何使用PythonTuple类型
示例代码: new PythonTuple(new[] { 1, 2, 3 }); PythonTuple myTuple = PythonOps.MakeTuple(new object[] { 1 ...
- ADB命令笔记本
ADB即Android Debug Bridge,作为电脑操作手机的工具,被Android开发者和众多国内xxx安全管家所使用.在此记录一些常见的命令,随时更新,方便以后查找.(万一以后我也要开发一款 ...
- PRML Chapter3
曲线拟合的几种方法 最大似然估计MLE,最大后验概率MAP:MLE和MAP MLE 给定一堆数据,假如我们知道它是从某一种分布中随机取出来的,可是我们并不知道这个分布具体的参,即"模型已定, ...
- Delphi 与 VC 共享接口和对象
我经常会用 Delphi 写一些工具和应用,为了扩展方便,大部分都会做成插件形式. 迫于某些原因,我的插件不得不用其他开发工具来完成,比如 VC. 于是有个大问题需要解决:如何让 D 和 VC 互相通 ...
- 去除文件属性(使用SetFileAttributes API函数)
FILE_ATTRIBUTE_ARCHIVE 文件存档(备份或移动时会对文件做标记).FILE_ATTRIBUTE_ENCRYPTED 加密(对文件来说是内容加密,对目录来说是对将来新建的文件默认为加 ...
- QT创建窗口程序、消息循环和WinMain函数(为主线程建立了一个QEventLoop,并执行exec函数)
使用QT也有一段时间了,有的时候需要跟踪代码到QT的源码中去查找问题.在这里我将记录一下我跟踪QT源码学习到的一些知识. 我的开发环境是VC6.0+QT4.3.3.QT已经不为VC6.0提供addin ...
- Ruby元编程:单元测试框架如何找到测试用例
前几天看了Google Testing Blog上的一篇文章讲到C++因为没有反射机制,所以如何注册测试用例就成了一件需要各显神通的事情.从我的经验来看,无论是Google的GTest还是微软的LTM ...
- SYN5605型 多通道时间间隔测量仪
SYN5605型 多通道时间间隔测量仪 时间间隔测量设备多通道时间间隔测量32路时间间隔测量仪使用说明视频链接; http://www.syn029.com/h-pd-80-0_310_6_-1. ...