您好,登錄后才能下訂單哦!
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">
看完上述內容,你們掌握mule的優點和缺點是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。