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等的实战优缺点
摘要: 文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动. 随着前端技术的蓬勃发展, 各种新技术随着生产力的需要不断的涌入我们的视野, 那今天探讨的话题是这些新时代的前端兵器谱: 一. ...
随机推荐
- 深入V8引擎-AST(4)
(再声明一下,为了简单暴力的讲解AST的转换过程,这里的编译内容以"'Hello' + ' World'"作为案例) 上一篇基本上花了一整篇讲完了scanner的Init方法,接下 ...
- 真实项目中 ThreadLocal 的妙用
一.什么是 ThreadLocal ThreadLocal 提供了线程的局部变量,每个线程都可以通过 set() 和 get() 来对这个局部变量进行操作,但不会和其他线程的局部变量冲突,实现了线程间 ...
- 用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个js效果
js代码 代码如下 复制代码 <div class="input"> <input type="button" id="bt ...
- 视图系统CBV 和 response
CBV和FBV FBV(function based view ) CBV(class based view) 1. CBV的定义 # 增加出版社 CBV from django.views imp ...
- C++学习书籍推荐《C++ Primer 第五版 (英文)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <C++ Primer(英文版)(第5版)>是全球最畅销的C++图书.这本久负盛名的C++经典教程,时隔八年之久,终迎来的重大升级.除令全球无数程 ...
- watch 和 computed
<template> <div class="hello"> <h1>{{ msg }}</h1> <h2>Essent ...
- App强更逻辑实现以及版本号如何判断大小
//在开发中,经常会遇到有些需求需要app强更,思路大概:所有请求都要带上版本号和渠道(android或ios),然后网关对这些版本号判断,如果发现这些版本号是很旧的,就返回错误码或者标志符告诉app ...
- 学习 Python 心得
脚本式编程: 通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕.当脚本执行完成后,解释器不再有效. 让我们写一个简单的 Python 脚本程序.所有 Python 文件将以 .py 为扩展名.将以 ...
- C语言指针专题——使用指针要注意这些
本文为原创,欢迎转发: 欢迎关注微博与微信号:C语言编程技术分享 C语言中,指针的概念有点难懂,使用起来稍微不注意,也会遇到各种问题.在本文中,我列举出了几个使用指针不当的方式,希望朋友们在编程实践中 ...
- 20190127-Orleans与SF小伙伴的部分问答
Orleans 怎么部署到服务器? 方式1:Orleans 服务端寄宿在Web应用中,将Web应用部署到服务器 方式2:通过SF/K8s部署到服务器 不同服务器上的谷仓和谷如何调配? 由Orleans ...