优点 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好用

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

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

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

正在测试在Tomcat容器下部署(较繁琐官网demo有误差),并用nginx做集群 tomcat下部署成功。但是tomcat下部署非常麻烦, 1项目需要修改成Maven项目,配置web.xml 2tomcat中需要配置很多mule的jar包,配置繁琐且容易出错 3各种版本兼容问题 4启动部署慢需要 107710ms

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

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

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

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

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">