MULE

来源:互联网 发布:python base64 decode 编辑:程序博客网 时间:2024/04/28 00:21

Mule

sf2gis@163.com

2016年08月01日

2016年10月17日添加请求参数和请求页面转发

2016年10月18日添加同域化

 

 

1 目标:控制所有消息路由、格式转换处理、服务管理等。

控制文件、HTTP、AJAX、TCP等各种格式的消息的路由分配,消息处理、转换,服务的启动、停止等管理。

2原理:MULE ESB统一管理消息路由(MQ)、格式转换(Java)、服务管理(CXF)

各种相关功能由对应的软件处理,集成到ESB进行统一的管理。消息路由由MQ控制、格式转换由各种转换Java包控制、WebService由CXF控制。

与Nginx的区别:Nginx主要进行网络负载均衡,无法处理文件等非网络消息,无法处理消息。而MuleESB主要进行消息路由和处理等,不处理负载均衡(ESB会集成负载均衡模块)。二者可以配合使用。

参考:https://docs.mulesoft.com/mule-fundamentals/v/3.6/begin-with-the-basics

http://blogs.mulesoft.com/tag/nginx/

与Apache Camel区别:Camel+FuseIDE需要手动配置较多,MULE集成度高,功能相似。

参考:https://www.mulesoft.com/resources/esb/mule-vs-camel-comparison

3流程:安装JDK,安装MuleRuntime,安装MuleRuntime。

3.1 安装JDK:设置JAVA_HOME,MuleStudio会自动调用JDK。

参见:..\Java\Java.docx

3.2 安装MuleRuntime:下载MuleRuntime,设置MuleRuntime环境变量MULE_HOME。MuleStudio会自动调用Mule_HOME。

3.3 安装MuleStudio:下载MuleStudio,解压后打开exe。

3.4 新建工程:File->New->MuleProject,填写项目,其它默认。

3.5 创建工作流:打开Echo.mflow,添加Endpoints中的File,Components中的Echo。

  

设置数据源:双击File编辑,修改文件夹位置。

3.6 运行MuleProject:右击Echo项目->RunAs-》MuleProject。

向File目录中添加一个Error.txt,可以看到console中数据其内容。

error.txt: this is error.2016-8-1 16:33:20

3.7 部署:打包,部署,运行

参考:http://itindex.net/detail/43606-soa-mule-esb

http://www.cnblogs.com/shunxiyuan/archive/2012/12/14/2818019.html

3.7.1 打包:将Mule工程打包成可发布压缩包。

Export-》MuleStudioProject to Mule Deployable archive-》zip路径

3.7.2 部署:将发布包zip复制到mule应用目录,服务器自动部署。

zip复制到mule-enterprise-standalone-3.4.2/apps目录。

MULE服务器运行时将自动解压并部署应用,同时生成应用-anchor.txt文件,用于快速删除应用。

3.7.3 运行:运行Mule服务器,发布Mule服务。

cmd=>运行mule-enterprise-standalone-3.4.2/bin-》输入mule,运行。

显示Mule is up and kicking,表示mule正常运行。

3.8 企业版WEB部署:使用企业版自动部署。

3.8.1 导出到仓库:导出工程到指定仓库。

Export->publish to Application Responsitory。

3.8.2 发布应用:发布仓库中的应用到指定服务器。

发布完成后,可以再apps文件夹看到部署的应用。

4方法:IDE:MuleStudio

参见:MuleIDE-MuleStudio.docx

5方法:表达式

参考:http://www.docin.com/p-1327827288.html

http://my.oschina.net/OpenSourceBO/blog/174120

https://docs.mulesoft.com/mule-user-guide/v/3.6/mule-expression-language-basic-syntax

https://docs.mulesoft.com/mule-user-guide/v/3.6/mule-expression-language-reference

5.1 目标:MULE原生的表达式,无Script,充当原生编程语言使用。

5.2 原理:表达式语言转换为Java进行后台操作。提供Server,Message等系统变量,完成信息读写。

5.3 方法:server,mule,application,Message,flowVars,sessionVars。

格式:#对象.参数【'数据项'】】

INFO  2016-08-08 17:19:47,886[[test1].connector.http.mule.default.receiver.02] Logger: msg=

org.mule.DefaultMuleMessage

{

  id=409067ac-5d49-11e6-bc3c-3fa2e105d95c

  payload=java.lang.String

  correlationId=<not set>

  correlationGroup=-1

  correlationSeq=-1

  encoding=UTF-8

  exceptionPayload=<not set>

 

Message properties:

  INVOCATION scoped properties:

  INBOUND scoped properties:

    Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

    Accept-Encoding=gzip, deflate, sdch

    Accept-Language=zh-CN,zh;q=0.8

    Cache-Control=max-age=0

    Connection=true

    Host=localhost:8081

    Keep-Alive=true

   MULE_ORIGINATING_ENDPOINT=endpoint.http.localhost.8081.mel

    MULE_REMOTE_CLIENT_ADDRESS=/127.0.0.1:62452

    Upgrade-Insecure-Requests=1

    User-Agent=Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36

    http.context.path=/mel

    http.context.uri=http://localhost:8081/mel

    http.headers={Upgrade-Insecure-Requests=1,Accept-Language=zh-CN,zh;q=0.8, Host=localhost:8081, Accept-Encoding=gzip,deflate, sdch, User-Agent=Mozilla/5.0 (Windows NT 6.1; WOW64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36,Keep-Alive=true, Connection=true,Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8,Cache-Control=max-age=0}

    http.method=GET

    http.query.params={may=xx}

    http.query.string=may=xx

    http.relative.path=

    http.request=/mel?may=xx

    http.request.path=/mel

    http.version=HTTP/1.1

    may=xx

  OUTBOUND scopedproperties:

    MULE_ENCODING=UTF-8

  SESSION scoped properties:

}; server=org.mule.el.context.ServerContext@27b58873;mule=org.mule.el.context.MuleInstanceContext@7f114a62;flowVars={};sessionVars={}

5.3.1 环境变量server:当前系统变量,包括系统时间,java版本,用户名等。

5.3.2 当前mule变量mule:

5.3.3 当前应用变量application:

5.3.4 消息Message:所有消息格式统一,结构标准。

参考:https://docs.mulesoft.com/mule-fundamentals/v/3.4/mule-message-structure

5.3.4.1  示例:WMS请求参数转发

参见:应用:GET请求参数转发-WMS GetFeatureInfo消息转发

5.3.4.2 示例:原始消息体#[message.payload]

参见:应用:消息转发-WMS消息体转发

5.3.5 流程变量flowVars:

5.3.6 应用变量sessionVars:

6方法:MULE消息

6.1 目标:MULE内部的通用消息,将所有外部消息封装为统一格式,便于消息分发、处理。

6.2 原理:JAVA对象Message,以HTTP协议为蓝本封装的键值对。

6.3 消息格式:消息头Header+消息体Payload。

Message

-|Header

--|inboundProperty:输入参数,原始消息,不可更改。

--|outbountProperty:输入参数经过处理后的结果。

-|Payload:实际的消息体。

-|flowVars

-|sessionVars

消息元数据Header:包括输入参数inboundProperty,输出参数outboundProperty。

输入参数inboundProperty是原始消息,不可更改;输出参数outboundProperty为输入参数经过处理后的结果。

消息内容Payload:实际的消息体。

附加信息:变量、附件、异常信息。

7 应用:消息转发-WMS消息体转发、GET请求参数转发-WMSGetFeatureInfo消息转发、地图页面-请求内容转发、发布SOAP服务、多个网站同域化处理

参见:Mule-应用.docx

 

0 0
原创粉丝点击