mule优缺点和MEL
优点
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">
mule优缺点和MEL的更多相关文章
- EnjoyingSoft之Mule ESB开发教程第四篇:Mule Expression Language - MEL表达式
目录 1. MEL的优势 2. MEL的使用场景 3. MEL的示例 4. MEL的上下文对象 5. MEL的Variable 6. MEL访问属性 7. MEL操作符 本篇主要介绍Mule表达式语言 ...
- EnjoyingSoft之Mule ESB开发教程系列第五篇:控制消息的流向-数据路由
目录 1. 使用场景 2. 基于消息头的路由 2.1 使用JSON提交订单的消息 2.2 使用XML提交订单的消息 2.3 使用Choice组件判断订单格式 3. 基于消息内容的路由 4. 其他控制流 ...
- EnjoyingSoft之Mule ESB开发教程第一篇:初识Mule ESB
目录 1. Mule ESB基本介绍 2. Mule ESB社区版和企业版 3. Mule ESB常用场景 4. Mule ESB软件安装 客户端安装 服务端安装 5. 第一个Mule ESB应用- ...
- EnjoyingSoft之Mule ESB开发教程第二篇:Mule ESB基本概念
目录 1. 使用Anypoint Studio开发 2. Mule ESB Application Structure - Mule ESB应用程序结构 3. Mule ESB Application ...
- EnjoyingSoft之Mule ESB开发教程第三篇:Mule message structure - Mule message结构
目录 1. 探索Mule Message结构 2. Mule Message的Payload 3. Mule Message的Property 4. Mule Message的Attachment 5 ...
- EnjoyingSoft之Mule ESB开发教程第六篇:Data Transform - 数据转换
目录 1. 数据转换概念 2. 数据智能感知 - DataSense 3. 简单数据转换组件 3.1 Object to JSON 3.2 JSON to XML 3.3 JSON to Object ...
- DDD CQRS架构和传统架构的优缺点比较
明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概 ...
- [NodeJS] 优缺点及适用场景讨论
概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. ...
- emmet,jade,haml, slim,less,sass,coffeescript等的实战优缺点
摘要: 文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动. 随着前端技术的蓬勃发展, 各种新技术随着生产力的需要不断的涌入我们的视野, 那今天探讨的话题是这些新时代的前端兵器谱: 一. ...
随机推荐
- Appcan 自定义星星评价
注意要先有图片: 放在 css/icons/下 HTML代码: <div class="ub ub-f1"> <input id="bz-0&q ...
- Smobiler控件的使用:ListView的数据绑定及实现多选
环境 SmobilerDesigner 4.7 Visual Studio 2010以上 正文 listview绑定数据 打开Visual Studio ,新建一个SmobilerApplicatio ...
- JAVA增强for循环
作用:简化数组和集合的遍历 格式:for(元素数据类型 变量 :数组或者集合) 例子: Map map=new HashMap; for(Object obj :map.keySet()){ Obj ...
- VS2013日常使用若干技巧+快捷键
1.注释的方法 1)sqlserver中,单行注释:— — 多行注释:/* 代码 */ 2)C#中,单行注释:// 多行注释:/* 代码 */ 3)C#中多行注释的快捷方式:先选中你要注 ...
- Design Principles (设计原则)
这是我在2018年4月写的英语演讲稿,可惜没人听得懂(实际上就没几个人在听). 文章的内容是我从此前做过的项目中总结出来的经验,从我们的寝室铃声入手,介绍了可扩展性.兼容性与可复用性等概念,最后提出良 ...
- HTML认识二
<!doctype html> <html lang="en"><head> <meta charset="UTF-8" ...
- CDQZ集训DAY0 日记
貌似没发生什么事…… 按照教练员的交代,写一下流水账…… 早上5:30到了机场,然后就默默地坐着飞机到了成都.然后就按预定好的被GXY的父亲的朋友接机(貌似因为觉得GXY和他爸的同学挺像被批判一番). ...
- Android开发-百度地图之电子围栏
功能实现:根据经纬度创建一个坐标,判断该坐标是否在指定圆形覆盖范围内 两个计算方法,直接套用: /** * 地球半径 */private static double EARTH_RADIUS = 63 ...
- Element-ui DatePicker显示周数
1.场景描述 我们公司是做电商的,运营的工作指标都是按周来定的,所以他们对周特别敏感,希望我们能在日期选择器上显示周数.刚接到这个需求时,心中很不乐意,因为Element-ui的日期选择器根本不支持显 ...
- 使用WebService发布soap接口,并实现客户端的https验证
什么是https HTTPS其实是有两部分组成:HTTP + SSL / TLS, 也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证. 如何进行身份验证? 首先我们要明白什么是对称 ...