版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Mule是一個(gè)企業(yè)服務(wù)總線(ESB)消息框架.它的主要特性包括:1.基于J2EE1.4的企業(yè)消息總線(ESB)和消息代理(broker).2.可插入的連接性:比如Jms,jdbc,tcp,udp,multicast,http,servlet,smtp,pop3, file,xmpp等.3.支持任何傳輸之上的異步,同步和請求響應(yīng)事件處理機(jī)制.4.支持Axis或者Glue的Web Service. 5.靈活的部署結(jié)構(gòu)Topologies包括Client/Server, P2P, ESB 和Enterprise Service Network. 6.與Spring 框架集成:可用作ESB 容器,也可
2、以很容易的嵌入到Spring應(yīng)用中.7.使用基于SEDA處理模型的高度可伸縮的企業(yè)服務(wù)器.8.強(qiáng)大的基于EIP模式的事件路由機(jī)制等.附-學(xué)習(xí)資料:Mule in Action,by David Dossot & John DEmicMule 官方文檔DZone Refcardz #40: Core Mule1. 簡介Mule ESB是一個(gè)基于Java的輕量級企業(yè)服務(wù)總線和集成平臺,允許開發(fā)人員快速便利地連接多個(gè)應(yīng)用,并支持應(yīng)用間的數(shù)據(jù)交換。Mule ESB支持集成現(xiàn)有系統(tǒng)而無論其底層采用何種技術(shù),如JMS、Web Services、JDBC、HTTP以及其他技術(shù)。2. 整體結(jié)構(gòu)圖 整體結(jié)構(gòu)從上
3、圖可見,Mule通過Transports/Connectors與外圍的異構(gòu)系統(tǒng)連接,提供Routing(路由)、Transaction Management(事務(wù)管理)、Transformation(轉(zhuǎn)換)、Message Broker(消息代理)、Transportation Management(傳輸管理)、Security(安全)等核心模塊。Mule可以單獨(dú)使用,也可以架設(shè)在常用的應(yīng)用服務(wù)器上。圖 架構(gòu)簡圖外圍系統(tǒng)的服務(wù)請求通過Mule ESB的Transport接入,Mule通過Transformer進(jìn)行數(shù)據(jù)的格式轉(zhuǎn)換,然后經(jīng)過Inbound Router進(jìn)行消息過濾(內(nèi)部通過配置fi
4、lter實(shí)現(xiàn))后交給Mule的Component進(jìn)行業(yè)務(wù)邏輯處理,處理后的結(jié)果通過Outbound Router確定傳遞給哪個(gè)接收方,然后通過Transformer進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,通過Transport連接至接收方,傳遞信息。此圖描述的是Mule中的一個(gè)典型場景的處理過程,涵蓋了Mule中的各個(gè)關(guān)鍵組件。其中某些處理步驟不是必須的,如Inbound Router、Transformer。后續(xù)可以看到一些其他場景的處理。3. 功能a. 服務(wù)中介 將業(yè)務(wù)邏輯和消息發(fā)送分離 屏蔽服務(wù)的消息格式和協(xié)議 提供任意位置的服務(wù)調(diào)用 提供協(xié)議橋接b. 數(shù)據(jù)轉(zhuǎn)換 在應(yīng)用間交換不同格式的信息 操作消息的負(fù)載內(nèi)容
5、,包括加密、壓縮和編碼轉(zhuǎn)換 在異構(gòu)的傳輸協(xié)議的數(shù)據(jù)類型間格式化消息c. 消息路由 基于消息內(nèi)容和復(fù)雜規(guī)則路由消息 消息的過濾、聚合以及重新排列序號d. 服務(wù)創(chuàng)建和托管 暴露端點(diǎn)、EJB、Spring Bean以及POJO作為服務(wù) 作為輕量級的服務(wù)容器進(jìn)行服務(wù)托管 Mule ESB中有一些基本的概念,理解這些基本概念后才能理解Mule的內(nèi)部機(jī)制。從中也可以看到Mule解決問題的基本思路。 4. 基本概念 4.1 Model Model表示托管各個(gè)服務(wù)的運(yùn)行時(shí)環(huán)境。 圖 Model 4.2 Service Service是用來處理服務(wù)請求的基本單位,它調(diào)用各個(gè)組件進(jìn)行服務(wù)請求的處理。 圖 Serv
6、ice 4.3 Transport Transport管理消息的接收和發(fā)送,數(shù)據(jù)轉(zhuǎn)換的過程也是在Transport中通過調(diào)用Transformer完成的。 圖 Transport 4.3.1 Connector Connector用于管控特定協(xié)議的使用,如HTTP Connector、JMS Connector等。 4.3.2 End-Point Endpoint用于表示一種協(xié)議的特定使用方式,如listening/polling、從中讀取、向指定地址寫入等,定義了發(fā)送和接收消息的通道。Endpoint控制的是底層的實(shí)體在Connector中如何被使用。 Endpoint定義于Inbound和
7、Outbound Router中。 4.4 Transformer Transformer用于轉(zhuǎn)換消息的內(nèi)容。 圖 Transformer 4.5 Router Router使用Filter基于消息中的屬性信息進(jìn)行消息的分發(fā)。 圖 Router Router在Service中的位置決定了Router的性質(zhì)(inbound、outbound和response)和擔(dān)任的角色(pass-through、aggregator等)。 4.6 Component Component是Service的核心部件,是Service的業(yè)務(wù)邏輯的實(shí)現(xiàn)。 圖 Component: implicit bridge co
8、mponent Component可以是Java Class(POJO、Spring Bean)、Web Service、Script等。 Component可定義自己的生命周期:initialise、start、stop、dispose,不過需要實(shí)現(xiàn)Mule的LifeCycle接口。Mule 3.0版本開始提供PostConstruct和PreDestroy的注解,對應(yīng)生命周期的initialise和dispose階段,不需要實(shí)現(xiàn)Mule的LifeCycle接口了。 4.7 Flow(since 3.0) Flow是Mule 3.0新引入的,包含一個(gè)消息源(Message Source)和多
9、個(gè)消息處理器組成的處理器鏈。 圖 Flow 根據(jù)實(shí)際需求著重檢查了一下Mule ESB的消息傳遞方式。Mule支持常用的幾種消息傳遞方式,能夠滿足要求。 5. 消息傳遞方式 5.1 異步方式 異步方式是一種單向調(diào)用,調(diào)用者不需要獲得響應(yīng)。 圖 Asynchronous 異步方式通過inbound和outbound endpoint的exchange-pattern=”one-way”實(shí)現(xiàn)。 使用基本的Stdio Transport驗(yàn)證,通過標(biāo)準(zhǔn)輸入傳輸字符串,將其原樣傳遞給標(biāo)準(zhǔn)輸出進(jìn)行顯示。相應(yīng)配置如下: 運(yùn)行服務(wù),控制臺顯示結(jié)果如下: Please enter: Hello, world!
10、INFO 2010-12-07 19:21:18,877 ConsoleConnector.dispatcher.1 org.mule.lifecycle.AbstractLifecycleManager: Initialising: ConsoleConnector.dispatcher. Object is: StdioMessageDispatcher INFO 2010-12-07 19:21:18,877 ConsoleConnector.dispatcher.1 org.mule.lifecycle.AbstractLifecycleManager: Starting: Conso
11、leConnector.dispatcher. Object is: StdioMessageDispatcher Hello, world! 其中INFO輸出是Mule第一次初始化相應(yīng)Connector打印出來的,之后調(diào)用服務(wù)不會(huì)再次顯示。 異步方式適用于簡單的消息傳遞的場景。 因?yàn)楸菊静┛途庉嫊r(shí)的問題,含有代碼的內(nèi)容只好單獨(dú)發(fā)布了,否則編輯時(shí)所有插入的代碼都丟失,修改起來太麻煩了。希望此問題能夠解決。 5.2 請求-響應(yīng)方式 請求-響應(yīng)方式即請求方調(diào)用服務(wù)后,服務(wù)立即處理并返回響應(yīng)結(jié)果,不需將消息再次傳遞。 圖 Request-Response 請求-響應(yīng)方式通過input endpoin
12、t的exchange-pattern=”request-response”實(shí)現(xiàn),相應(yīng)配置如下: 上邊是通過service配置的,通過flow配置如下: 在瀏覽器中輸入“http:/localhost:7007/services/Echo/echo/text/hello,world”,瀏覽器中會(huì)顯示“hello,world”的輸出信息。 請求-響應(yīng)方式適用于單次服務(wù)調(diào)用的場景。 5.3 同步方式 同步方式即請求方調(diào)用服務(wù)后,component將處理結(jié)果發(fā)送給另一個(gè)外部服務(wù)處理,并將處理結(jié)果反方向返回。圖 Synchronous 同步方式通過inbound和outbound endpoint的ex
13、change-pattern=”request-response”實(shí)現(xiàn),相應(yīng)配置如下: 同步方式適用于通過Mule調(diào)用遠(yuǎn)程服務(wù)的場景。 5.4 異步請求-響應(yīng)方式 異步請求-響應(yīng)方式即請求方調(diào)用服務(wù)后不需要立即獲得返回結(jié)果,component將請求發(fā)送給其他外圍系統(tǒng)處理(可能有多個(gè)),全部處理完畢后通過指定的異步應(yīng)答Router返回給請求方。 圖Asynchronous Request-Response 異步請求-響應(yīng)方式通過在OutBound Endpoint中增加reply-to以及增加async-reply節(jié)點(diǎn)實(shí)現(xiàn),響應(yīng)配置如下: 異步請求-響應(yīng)方式適用于請求需要被多個(gè)遠(yuǎn)程服務(wù)并行處理,
14、結(jié)果需要匯總處理后返回的場景。 注:上述代碼未運(yùn)行通過,queue1和queue2獲得了請求消息并正常處理,但返回至async-reply時(shí)拋出異常,暫未定位到問題。 后將collection-async-reply-router改為single-async-reply-router未報(bào)異常,代碼示例如下: 等有空看看collection-async-reply-router吧,或者自定義router。 6. 配置模式 Mule 3.0版本提供了“pattern”的機(jī)制。Pattern總結(jié)了實(shí)際使用過程中的常見場景,以簡化的服務(wù)配置方式提供。 6.1 簡單服務(wù)模式(simple service
15、 pattern) 簡單服務(wù)模式用于簡化同步服務(wù)調(diào)用的配置,對應(yīng)消息傳遞方式中的請求-響應(yīng)方式。 圖 簡單服務(wù)模式 簡單服務(wù)模式通過simple-service元素配置,主要的元素屬性包括:屬性說明address服務(wù)監(jiān)聽的地址,如vm:incomponent-classComponent的實(shí)現(xiàn)類typedirect: 默認(rèn);jax-ws: 將component暴露為soap式的web service(component必須基于jax-ws的注解),address一般為Http Transport;jax-rs: 將component暴露為rest式的web service(component必
16、須基于Path的注解),address一般為Http或Servlet Transport 代碼示例: Mule針對服務(wù)請求接入可以做額外的處理,比如增加Transformer配置進(jìn)行數(shù)據(jù)轉(zhuǎn)換。 6.2 橋接模式(bridge pattern) 橋接模式用于在inbound endpoint和outbound endpoint之間建立直接連接,不需要component提供業(yè)務(wù)邏輯。 圖 橋接模式 橋接模式通過bridge元素配置,主要屬性包括:屬性說明inboundAddress服務(wù)請求接入地址outboundAddress服務(wù)接出的實(shí)際地址exchange-patternrequest-res
17、ponse:默認(rèn),返回處理結(jié)果;one-way:單向transactedtrue:在向outbound endpoint分發(fā)時(shí)使用事務(wù);false:不使用事務(wù) 代碼示例: Mule在接入、接出的過程中可以做額外的處理,比如增加Transformer配置進(jìn)行數(shù)據(jù)轉(zhuǎn)換。如果使用事務(wù)控制,對于異構(gòu)的協(xié)議之間的事務(wù)需要有支持XA的事務(wù)控制器。 6.3 校驗(yàn)器模式(validator pattern) 校驗(yàn)器模式通過定義一個(gè)校驗(yàn)過濾器過濾服務(wù)請求,并同步返回ACK(ACKnowledge)或NACK(Not Acknowledge)結(jié)果。通過校驗(yàn)的服務(wù)請求被異步分發(fā)給處理方。 圖 校驗(yàn)器模式 校驗(yàn)器模式通過validator元素配置,主要屬性包括:屬性說明inboundAddress服務(wù)請求接入地址outboundAddress服務(wù)接出地址ackExpression表達(dá)式,用于構(gòu)建服務(wù)請求被接收時(shí)的信息nackExpression表達(dá)式,用于構(gòu)建服務(wù)請求被拒絕時(shí)的信息errorExpressionsince 3.0.1表達(dá)式,用于構(gòu)建在服務(wù)請求分發(fā)出錯(cuò)時(shí)的信息validationFilter-ref過濾器的引用,也可以使用子元素指定用于確定服務(wù)請求是否被接收 代碼示例: 注:Mu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成品油海上運(yùn)輸服務(wù)協(xié)議2024年
- 2023-2024學(xué)年之江教育評價(jià)高三下階段測試(五)數(shù)學(xué)試題
- 2024年企業(yè)勞務(wù)服務(wù)協(xié)議模板
- 2024辦公電腦集中采購協(xié)議模板
- 2024年反擔(dān)保協(xié)議條款示例
- 2024年家居裝飾協(xié)議格式
- 2024年批量錨具采購商務(wù)協(xié)議條款
- 文書模板-旅游服務(wù)轉(zhuǎn)讓合同
- 2024年電商管理代運(yùn)營協(xié)議模板
- 2024年公司反擔(dān)保條款詳細(xì)協(xié)議
- NB_T 10339-2019《水電工程壩址工程地質(zhì)勘察規(guī)程》_(高清最新)
- 繁體校對《太上老君說常清靜經(jīng)》
- 關(guān)于統(tǒng)一規(guī)范人民防空標(biāo)識使用管理的通知(1)
- 電纜振蕩波局部放電試驗(yàn)報(bào)告
- 西門子RWD68說明書
- 針對建筑工程施工數(shù)字化管理分析
- 多品種共線生產(chǎn)質(zhì)量風(fēng)險(xiǎn)評價(jià)
- 【MBA教學(xué)案例】從“蝦國”到“國蝦”:國聯(lián)水產(chǎn)的戰(zhàn)略轉(zhuǎn)型
- Unit-1--College-Life
- 醫(yī)院車輛加油卡管理制度
- 平面四桿機(jī)構(gòu)急回特性說課課件
評論
0/150
提交評論