Mule ESB在众多开源的ESB中处于领先者的地位,MuleSoft公司也作为独角兽,2017年在纽交所上市。我们作为MuleSoft的合作伙伴也有幸参与其中,在六年多的时间里,我们使用Mule ESB实施,包括使用Mule ESB企业版实施,或者在社区版基础上扩展,使用Mule ESB社区版实施,帮助国内众多的企业成功上线SOA项目。

使用Mule ESB的过程中,体会到其快速的开发效率,以及优秀的架构设计。同时也深感国内这块资料非常稀少,所以计划使用8篇文章来写Mule ESB的基础课程系列。

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 BlogsCSDN简书

访问EnjoyingSoft 网站,获取更多Mule ESB 社区版 实施帮助。

欢迎转载,但必须保留原文和此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

EnjoyingSoft之Mule ESB开发教程第二篇:Mule ESB基本概念的更多相关文章

  1. EnjoyingSoft之Mule ESB开发教程第一篇:初识Mule ESB

    目录 1. Mule ESB基本介绍 2. Mule ESB社区版和企业版 3. Mule ESB常用场景 4. Mule ESB软件安装 客户端安装 服务端安装 5. 第一个Mule ESB应用- ...

  2. EnjoyingSoft之Mule ESB开发教程系列第五篇:控制消息的流向-数据路由

    目录 1. 使用场景 2. 基于消息头的路由 2.1 使用JSON提交订单的消息 2.2 使用XML提交订单的消息 2.3 使用Choice组件判断订单格式 3. 基于消息内容的路由 4. 其他控制流 ...

  3. EnjoyingSoft之Mule ESB开发教程第三篇:Mule message structure - Mule message结构

    目录 1. 探索Mule Message结构 2. Mule Message的Payload 3. Mule Message的Property 4. Mule Message的Attachment 5 ...

  4. EnjoyingSoft之Mule ESB开发教程第四篇:Mule Expression Language - MEL表达式

    目录 1. MEL的优势 2. MEL的使用场景 3. MEL的示例 4. MEL的上下文对象 5. MEL的Variable 6. MEL访问属性 7. MEL操作符 本篇主要介绍Mule表达式语言 ...

  5. EnjoyingSoft之Mule ESB开发教程第六篇:Data Transform - 数据转换

    目录 1. 数据转换概念 2. 数据智能感知 - DataSense 3. 简单数据转换组件 3.1 Object to JSON 3.2 JSON to XML 3.3 JSON to Object ...

  6. Python开发【第二篇】:初识Python

    Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...

  7. .Net魔法堂:史上最全的ActiveX开发教程——部署篇

    一.前言 接<.Net魔法堂:史上最全的ActiveX开发教程——发布篇>,后我们继续来部署吧! 二. 挽起衣袖来部署   ActiveX的部署其实就是客户端安装ActiveX组件,对未签 ...

  8. .Net魔法堂:史上最全的ActiveX开发教程——发布篇

    一. 前言 接着上一篇<.Net魔法堂:史上最全的ActiveX开发教程——开发篇>,本篇讲述如何发布我们的ActiveX. 二.废话少讲,马上看步骤! 1. 打包  C#开发的Activ ...

  9. Spring cloud系列教程第二篇:支付项目父工程图文搭建

    Spring cloud系列教程第二篇:支付项目父工程图文搭建 在讲解spring cloud相关的技术的时候,咱们就模拟订单支付这个流程来讲讲 在这个支付模块微服务搭建过程中,上面的这些技术,都会融 ...

随机推荐

  1. Struts2之Struts2

    Struts2-2.5.5版本是目前为止最新的版本了,相对于之前的2.3版本以及再之前的版本而言,新版本改动了很多. 好了,废话不多说,GO CODE! 基本jar包: web.xml核心配置,这里要 ...

  2. 利用NPOI生成DOCX文档

    首先安装NPOI控件: Install-Package NPOI 代码: using NPOI.OpenXmlFormats.Wordprocessing; using NPOI.XWPF.UserM ...

  3. 三星860 evo 250g 开启AHCI模式读写对比

    主板比较老,只支持sata2接口 换用三星860evo后跑分对比

  4. LFS Linux From Scratch 笔记2(经验非教程)BLFS

    LFS 完了. 其实还没完,还要装一些其他的组件,系统才算是对人类有用的系统. 正好这里有个BLFS Beyound Linux From Scratch 的教程. 其实,按照现有的可运行的LFS系统 ...

  5. 下载Cloudera Repo

    wget http://archive-primary.cloudera.com/gplextras5/redhat/6/x86_64/gplextras/cloudera-gplextras5.re ...

  6. Java的String类字符串的拆分

    在java编程中,有时候我们需要把一个字符串按照某个特定字符.字母等作为截点分割这个字符串, 这样我们就可以使用这个字符串的一部分或者把所有截取的内容保存到数组里等操作. public class S ...

  7. Hadoop 三剑客之 —— 分布式计算框架 MapReduce

    一.MapReduce概述 二.MapReduce编程模型简述 三.combiner & partitioner 四.MapReduce词频统计案例         4.1 项目简介      ...

  8. YARN分析系列之一 -- 总览YARN组件

    下图简单明了的描述了hadoop yarn 的功能是如何从 hadoop 中细化出来的. 注:图片来自 https://apprize.info/php/hadoop/9.html Hadoop 从 ...

  9. 纯CSS制作加<div>制作动画版哆啦A梦

    纯CSS代码加上<div>制作动画版哆啦A梦(机器猫) 哆啦A梦(机器猫)我们大家一定都很熟悉,今天给大家演示怎么用纯CSS代码,来做一个动画版的哆啦A梦. 效果图: ###下面代码同学可 ...

  10. Programming In Lua 第六章

    1, 2, 3,