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

咱们在作企业集成项目的时候,常常会用到不少开源中间件,好比企业服务总线,消息中间件,服务框架等。在使用这些开源中间件的时候,咱们也趟过了不少的坑,EnjoyingSoft,就是享受这些软件,其中积累的经验分享给你们,但愿为开源事业作一份贡献。这篇系列主要说的是企业服务总线Mule ESB。数据库

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

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

1. Mule ESB基本介绍

Mule ESB是世界上使用最普遍的开源企业服务总线(ESB)产品,已拥有超过数百万的下载量,以及来自世界各地数十万个开发人员,不少世界五百强企业选择Mule ESB做为企业集成平台。经过Mule,企业能够在短期内轻松地建立并集成应用服务,Mule ESB消除了系统集成的复杂度,使开发人员可以在异构系统和服务之间,轻松地构建出高性能的集成应用。架构

和传统的ESB不同,Mule ESB是一个轻量级的ESB,内核基于SEDA模型和Spring框架构建。基于Spring,意味有着很是灵活的扩展性。同时Mule ESB不只仅是一个ESB,它也是流行的微服务体系中的一部分。这个系列咱们着重介绍它的ESB功能,后续咱们再着重介绍它的API管理等功能。app

2. Mule ESB社区版和企业版

和不少开源软件同样,Mule ESB分红两个版本,社区版和企业版。其中社区版是无偿使用的。而企业版则须要付费订阅使用,功能更强大。若是企业预算充足,则能够选择企业版。或者使用Mule ESB社区版,在社区版基础上作扩展,在有技术支持的状况下,一样能够收到良好的效果。框架

关于社区版和企业版的主要区别,能够参照下表。如何选择能够参考具体的业务场景和企业状况。Anyway,因为Mule ESB是开源的,咱们在社区版上能够有不少的灵活扩展。微服务

3. Mule ESB经常使用场景

咱们来讲一下Mule ESB的常见应用场景,能够更好的理解Mule ESB到底能够帮助咱们解决什么问题。工具

  1. 旧系统改造,开放系统的服务能力。举个例子,咱们有一个电商系统,须要调用SAP ERP的订单接口来建立订单。这个时候就须要将SAP的订单服务暴露成咱们流行的Rest Service接口,以方便电商系统调用。固然电商系统能够直接使用SAP的JCO包来调用SAP的BAPI Function,但显然暴露一个通用的Rest Service更易于调用。使用Mule ESB实现以下:性能

  2. 系统集成。举个例子,不少系统之间数据交互可能仍是用FTP目录。尤为是企业跟企业之间的数据交互,好比,A企业丢一个EDI 文件到B企业的FTP目录,而后B企业会从FTP目录下载解析并放置到数据库。这个场景用Mule ESB实现就很方便。

  3. ETL。市面上有不少开源的ETL软件,其实Mule ESB也有ETL的功能,经过Flow设定ETL的数据转换和数据流向。下图就演示了Mule的ETL和数据分发功能。

4. Mule ESB软件安装

用一个相对宽泛的标准来划分,Mule ESB软件能够分红两部分。

一部分是客户端,也就是基于Eclipse的Anypoint Studio,客户端就是用来开发集成应用的,一般面向的用户就是咱们的开发人员。因为是基于Eclipse环境,因此Java开发人员会很熟悉,同时Anypoint Studio也能够集成Git,SVN,Maven,Junit,Jenkins等一系列生态工具。

固然做为其余语言的开发人员也不用担忧,Anypoint Studio是一个可视化的拖拽的开发环境,大部分的工做只须要使用鼠标拖拽组件,配置属性便可。

还要一部分是服务端,也就是Mule Runtime,也能够称做Container,容器,注意不要跟Docker的概念混淆。这里的Container指的是Java Container,你能够大概想象成Tomcat相似的东西。客户端开发的应用就部署运行在Mule Runtime中。

须要注意的是,Mule Runtime是一个独立的Container,只依赖JDK,并不依赖其余第三方的容器。服务器中只须要安装JDK和Mule Runtime,便可运行Mule应用。还有一种不太常见的作法,就是把Mule App跑在第三方的容器里(好比Tomcat等),经过对容器的扩展来支持Mule App。不过咱们不推荐这种作法,仍是推荐使用独立的Mule Runtime,也就是官方说的Standalone版本。

客户端安装

Anypoint Studio是基于Eclipse构建的,你能够在这里下载到(Windows 64BitMac 64Bit)。请根据你的客户端的操做系统选择对应的版本。咱们只要在Windows或者Mac电脑上安装好JDK8以后,解压缩Zip包,双击便可打开。打开的界面以下:

因为Anypoint Studio默认只内嵌了Mule ESB企业版运行时,若是你想使用社区版的话,咱们还须要安装Mule ESB社区版运行时。为何客户端也须要Runtime?这很容易理解,咱们开发调试都须要使用Runtime,难道你编写代码后,不运行和调试吗-:)

安装社区版运行时,可使用下列步骤。

  1. 点击Help/Install New Software...菜单

  2. 在Work with下拉框中选择Mule Runtimes for Anypoint Studio

  3. 选中Mule ESB Server Runtime 3.9.0 CE,CE就是Community Edition,社区版的意思。而后点击Next一直到完成。

服务端安装

服务端不区分操做系统,你能够从这里下载到3.9.0版本的社区版Runtime。Mule ESB Runtime能够运行在Windows,Linux,Mac等操做系统上,咱们推荐在生产环境使用Linux部署Mule ESB Runtime。服务端的安装也很简单,只要在服务器上安装好JDK8以后,解压缩Runtime便可。

5. 第一个Mule ESB应用- Hello world

咱们学习新的语言和框架都会使用经典的Hello world程序,这里也不例外。咱们要作的就是,使用Mule ESB创建一个HTTP服务,当用户访问HTTP端口后,返回Hello world。开发步骤很简单:

  1. 点击File/New/Mule Project,新建Mule工程,这里选择使用CE版,也就是社区版,而后一步步Next直到完成。

  2. 拖入HTTP组件到空白的画布中。

  3. 选择画布上的Http组件,在属性页面新增Connector Configuration,在弹出窗口设定侦听的端口,注意不要和你本机的端口冲突。

  4. 拖入Set Payload组件,在属性页面,设定Value值,Hello word。

  5. 在工程项目上右击弹出菜单,Run As/Mule Application。稍等片刻,Console窗口会出现"Mule is up and kicking",表示Mule已经开始工做了!

  6. 使用Postman访问HTTP端口,返回Hello world,Mule。恭喜你,你是一个Mule开发者了 -:)

使用Mule ESB上手很是简单,咱们后续会介绍更多的组件,好比你须要从数据库获取数据,那么就使用Database,还有更多组件等待挖掘。

6. 部署Mule ESB应用

咱们已经在客户端开发完成了Hello world,也顺利跑起来了。可是如何部署到服务端呢。和常见的Java开发同样,咱们也须要打包应用。这里咱们用的是普通工程,咱们经过一个Export操做,便可导出Mule App(固然Mule App也支持Maven工程,能够经过Maven打包)。在工程项目上右击弹出菜单,Export...,而后在对话框中选择Anypoint Studio Project to Mule Deployable Archive。注意这里不要选中Attach project sources。

将导出的Zip包放入到Mule Runtime的apps目录下,而后启动Mule Runtime。若是是Linux或者mac,那么在Mule Runtime的bin目录下执行./mule启动命令。若是是Windows,双击执行bin目录mule.bat便可启动。

而后使用Postman访问服务器,你会获得和Studio同样的效果。

本文同步发文于EnjoyingSoft BlogsCSDN简书

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

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

相关文章
相关标签/搜索