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
- MULE
- mule
- mule
- MULE
- Mule
- Mule介绍
- Hello, Mule!
- Mule简介
- mule config
- mule spring
- Mule ESB
- mule transports
- mule介绍
- mule esb
- Mule介绍
- MULE扫盲
- Mule ESB
- Mule安装
- HTTP 599: SSL certificate problem: unable to get local issuer certificate错误
- leetcode的判断一个二叉树是否是平衡树
- JAVA 的两种流 字节流 InputStream OutputStream 字符流 Reader Writer
- 练习题目-动态第k小
- 使用Gradle自动化构建多类型apk包
- MULE
- [转载]QT框架的一个截图工具
- C语言OJ项目参考(1034) 求值
- js return void 0; 的疑问
- CSS3_Node2_背景渐变&蒙版&倒影
- 算法之—冒泡排序
- C语言OJ项目参考(1039) 小球自由下落
- ionic之样式button
- 初识Mybatis整合______整合教程(Spring+springMVC+Mybatis)