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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章