最近在工作中看到多次mule这个词,不知道是什么东西,今天又看到一个server的type是JBOSS & MULE, 就搜了一把,看看这到底是个什么东西,初步了解一下。
what is MULE?
一个以Java为核心的轻量级的消息框架和整合平台。它使得开发人员可以快速,简单的连接多个应用。
目前许多公司都使用了Mule,比如Walmart,HP,Sony,Deutsche Bank 以及 CitiBank等公司。
Mule基于Enterprise Service
Bus(ESB)架构思想。ESB的主要特性是通过扮演一个中转系统的角色,允许不同的应用系统交互,中转系统在内网或Internet上的应用系统间搬运数据。
目前市场上有一些商业的ESB实现。尽管如此,大部分提供有限的功能,或在已存应用服务器/消息服务器之上构建,将你锁定在特定的供应商(将你固定的ESB厂商)。Mule是供应商中立的,因此不同厂商的实现可以插入进来。当你使用Mule时,永远不会锁定的特定的供应商。
------------------------------------------------------------------------------------------------
mule是一个服务器,不同于其他的应用服务器,它的功能是专做请求转发用的吧,类似与代理,个人感觉!
一
下载,mule是开源软件,可以到mule的官网上下载,mule还有一个带图形界面的版本,叫mule stdio,好像是商业版的。
下载的是一个zip包,解压出来后,里面的文件夹有bin,example,apps等,
bin里面有开启服务器的命令mule.bat。
example里面放的是mule自带的实例,有hello等。
apps里面放的是自己要发布的项目,里面的项目如果没出错的话,可以在浏览器中请求到的。
二
自带实例运行:
打开mule-standalone-3.3.1exampleshello,在hello中有一个mule-example-hello-3.3.1.zip压缩包,把这个压缩包复制到apps目录下,到bin目录下打开服务器,然后在浏览器中请求:http://localhost:8888/?name=Ross,就会返回结果,例子用法在hello文件下的readme.txt文件中有说明。其他例子类似。
三
一个mule项目中有一个配置文件mule-config.xml,可以打开目录mule-standalone-3.3.1exampleshellosrcmainapp下的配置文件,简单的解释下:配置文件中的主要元素介绍:
flow定义了一个请求流程,一个flow中有访问入口inbound-endpoint,然后下面有转换器transformer和组件component,他们都是一个类,可以自己编写,都是对消息进行处理的,最后还有一个出口outbound-endpoint,去访问其他服务上的资源。
这里的消息是指请求到来的时候,mule会把请求中的信息封装为一个消息message对象,里面包括请求头以及你的请求参数。如ip,端口,编码方式等。
四
关于处理类,有没有想过如果类中有多个方法,你只配置了类,又没指明方法,它怎么会知道调用哪个方法呢,不用担心,你的方法总有参数吧,你提供的消息是什么类型的,就会调用什么类型参数的方法,这里用到了反射机制,如果无匹配的,就会报错的。如果方法需要某个类型的参数,可以在组件类之前使用转换类对消息进行转换。
转换类:一般会继承一个抽象的转换类abstracttransformer类,需要实现一个方法,方法中有你对消息进行处理的逻辑,刚进来的消息类型是一个字符串。
Ps:总结一下mule的请求过程就是,来一个请求,然后再把请求转发到另一台服务器或直接返回,期间会对请求中的消息做一些处理,以及可以发送不同协议的请求,如http,webservice等。