mule优势和缺点

优势
1.开源 https://github.com/mulesoft/mule
2.丰富的connector ,能够经过不一样的形式来链接各个系统JMS、Web Service、JDBC、HTTP等
3.components(组件)不少,可选的处理数据方式多
4.transformers也很丰富,可扩展 json、xml、dom、二进制、wsdl、java等
5.mule esb 采用java实现,java的优势之一进行企业级应用开发,esb 的做用就是提供各个系统之间的交互平台:数据传输总线,使用开源Java实现也是不少公司选择之一,用的企业多了,就会发展更快更加成熟
6.不修改现有组件,低耦合的实现业务逻辑和消息逻辑彻底分离开
7.支持集群、故障转移和负载均衡,多种部署方式:Tomcat、BEA WebLogic、JBoss,通过调研发现仍是自身自带的mule-standalone-3.9.0好用html

缺点
1.集群很是弱,只能配置一个主实例和一个从实例,不支持flow和基于模式的配置,可使用nginx集群,效果还能够接受
2.企业版和社区版区别 https://www.mulesoft.com/cn/platform/soa/mule-esb-enterprisejava

教程
https://developer.mulesoft.com/tutorials-and-how-tosmysql

链接mysql数据库,部署在mule-standalone-3.6.0容器中,经测试能够正常链接查询数据库(4.1.1版本部署有问题)linux

正在测试在Tomcat容器下部署(较繁琐官网demo有偏差),并用nginx作集群
tomcat下部署成功。可是tomcat下部署很是麻烦,
1项目须要修改为Maven项目,配置web.xml
2tomcat中须要配置不少mule的jar包,配置繁琐且容易出错
3各类版本兼容问题
4启动部署慢须要 107710msnginx

http://192.168.1.39/Test
后通过调研 使用mule提供的官方mule-standalone容器便可,通过测试部署成功,而且用nginx作了负载均衡,部署了2个mule应用,均可以访问,可是须要修改mule中http的端口号,
mule-standalone容器中没法修改,跟tomcat有区别,mule项目中配置监听端口才会生效,端口跟项目中的Http配置走,理论能够监放任何端口。git

项目中Http配置必须配置成All Interfaces [0.0.0.0] (Default) 不能配置localhost 不然部署到linux下,只能本地localhost访问。很大的坑(注意)github

demo
https://docs.mulesoft.com/mule-user-guide/v/3.9/mel-cheat-sheetweb

CE 社区版本 EE企业版本
https://docs.mulesoft.com/anypoint-mq/sql

jersey教程
https://jersey.github.io/documentation/latest/index.html数据库

mule MEL
https://docs.mulesoft.com/mule-user-guide/v/3.9/mule-expression-language-mel
Mule Expression Language Reference

远哥视频 mule
http://i.youku.com/tavenli

1.必须熟悉MEL(Mule Expression Language)语言
2.了解MuleMessage结构和Payload对象
3.对经常使用的connector、scoper、component、transformer、filter、flowControl、errorHanding要熟悉
4.了解APIKit Router和 APIKit Console,熟悉RAML

MEL表达式
#[表达式]
#[server.dateTime] 获取服务器时间
#[2+2 == 4]
#[message.inboundProperties['http.query.params']['uId']] 获取http请求的uId参数
#[message.inboundProperties.city] / #[message.inboundProperties['city']]
#[xpath('/user/username').text]
#[payload]
#[json:visitGuid]
通常来讲,当使用POST方法传递JSON数据到HTTP组件后,此时若是放置一个Logger组件,会发现通过HTTP组件后,payload的类型实际是org.glassfish.grizzly.utils.BufferInputStream,由于通过HTTP后将负载变为了流的形式了。
若是须要还原为JSON格式字符串,方法有两个:
(1)在HTTP组件后,使用Object to String组件将payload转为String,最简单的方法。
(2)使用MEL表达式#[message.payloadAs(java.lang.String)]
(3)java中能够继承AbstractMessageTransformer,而后经过MuleMessage类的getPayloadAsString()方法

mule四大对象
server / mule / app / message

Message Variables分为2中
flowVars 只在同一个Flow中使用
sessionVars 只在同一个appliaction下的全部Flow使用

安装安全组件
http://security-update-site.s3.amazonaws.com

mule调用乱码问题
<head>
<meta http-equiv="Content-Type" content="txt/plain;charset=utf-8"/>
</head>
<form action="http://localhost:8081/createOrder" method="post" accept-charset="GB18030">

相关文章
相关标签/搜索