<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 59, 文章 - 4, 評(píng)論 - 184, 引用 - 7
    數(shù)據(jù)加載中……

    【ESB專題】之二 - Message Channel及其相關(guān)模式

     

     

    在前面一個(gè)專題中,我們列出了一個(gè)ESB系統(tǒng)所需要關(guān)心的所有方面的關(guān)鍵組件,這里介紹其中的Message Channels所關(guān)注的問(wèn)題及相關(guān)的模式。

     

    Message Channel主題之下包含以下模式,分別用于解決channel中不同方面的問(wèn)題:

     

    l         Point-to-Point Channel  

    l         Publish-Subscribe Channel   

    l         Datatype Channel  

    l         Invalid Message Channel      

    l         Dead Letter Channel     

    l         Guaranteed Delivery     

    l         Channel Adapter    

    l         Messaging Bridge  

    l         Message Bus  

     

     

    當(dāng)兩個(gè)應(yīng)用需要交換數(shù)據(jù),它們通過(guò)連接兩端的channel來(lái)發(fā)送數(shù)據(jù)。發(fā)送的應(yīng)用可能不知道哪個(gè)應(yīng)用將接受數(shù)據(jù)。然而,通過(guò)選擇特定的channel來(lái)發(fā)送,發(fā)送者知道接受者將是守候在channel另一端等待數(shù)據(jù)的應(yīng)用之一。通過(guò)這種方式,生產(chǎn)數(shù)據(jù)的應(yīng)用有了一個(gè)同數(shù)據(jù)消費(fèi)者通訊的途徑。

     

    Message Channels面對(duì)的各個(gè)主要問(wèn)題:

     

    如果一個(gè)應(yīng)用要傳輸或接受數(shù)據(jù),它一定會(huì)用到一個(gè)channel。問(wèn)題是你的應(yīng)用要知道要使用什么樣的channel,以及用它來(lái)做什么。

     

    固定的channel集合 Channel中討論的一個(gè)主題是,一個(gè)應(yīng)用可用的Message Channel集合一般是固定的。設(shè)計(jì)一個(gè)應(yīng)用時(shí),一個(gè)開(kāi)發(fā)者必須知道將某種類型的數(shù)據(jù)放到哪里可以同其他應(yīng)用共享該數(shù)據(jù),以及從什么地方可以找到其他應(yīng)用的特定數(shù)據(jù)。這些通訊路徑不會(huì)在運(yùn)行期動(dòng)態(tài)的創(chuàng)建和發(fā)現(xiàn);它們需要在設(shè)計(jì)期間就確定下來(lái),以便應(yīng)用知道它的數(shù)據(jù)從哪里來(lái)以及數(shù)據(jù)將去哪里。( 雖然大多數(shù)channel必須被靜態(tài)定義使正確的,但是也有例外,有些情況下動(dòng)態(tài)channel是很好用的。一個(gè)例外就是Request-Reply模式中的reply channel。請(qǐng)求者可以創(chuàng)建或者獲得一個(gè)應(yīng)答者不知道的新的channel,并在請(qǐng)求消息中指定該channelReturn Address,應(yīng)答者就可以使用它。另外一個(gè)例外是支持集成channels的消息系統(tǒng)實(shí)現(xiàn)。一個(gè)接受者可以訂閱一個(gè)集成體系的根channel,然后發(fā)送者可以發(fā)布消息到一個(gè)子channel,而接受者不需要知道子channel,仍然會(huì)收到消息。這些都是不常見(jiàn)的情況,channel通常仍然是在部署之前被定義,并且應(yīng)用被設(shè)計(jì)連接到一個(gè)已知的channel集合 )。

     

    決定channel的集合 一個(gè)相關(guān)的主題是,誰(shuí)決定那些Message Channel是可用的 message系統(tǒng)還是應(yīng)用程序?換句話說(shuō),是由消息系統(tǒng)確定一些channel,然后要求應(yīng)用程序使用它們?還是應(yīng)用決定它們需要什么channel,然后要求消息系統(tǒng)提供它們?這個(gè)問(wèn)題沒(méi)有一個(gè)簡(jiǎn)單的答案,設(shè)計(jì)必須的channel集合是迭代的。首先,應(yīng)用要決定消息系統(tǒng)提供哪些channel。然后應(yīng)用將圍繞這些channel設(shè)計(jì)它們的通訊,但是如果這樣是不可行的,它們將需要添加額外的channel。當(dāng)一些應(yīng)用已經(jīng)使用了一個(gè)確定的channel集合,當(dāng)加入新的應(yīng)用,它們將使用已存在的channel。當(dāng)為應(yīng)用添加新的功能,它們需要新的channel

     

    單向channel 另外一個(gè)經(jīng)常引起混淆的是一個(gè)Message channel是單向的還是雙向的。技術(shù)上來(lái)說(shuō),兩者都不是,一個(gè)channel更像是一個(gè)桶,一個(gè)應(yīng)用放入數(shù)據(jù),另外一個(gè)應(yīng)用從中取出數(shù)據(jù)。但是由于數(shù)據(jù)是放在消息中從一個(gè)應(yīng)用傳到另一個(gè),這使得channel具有方向性,使它變成單向的。如果一個(gè)channel是雙向的,應(yīng)用將從中發(fā)送和接受數(shù)據(jù),雖然技術(shù)上是可行的,但是會(huì)有小小的問(wèn)題,應(yīng)用將有可能持續(xù)的取出自己放進(jìn)去的希望發(fā)送給其他應(yīng)用的消息。所以,為了實(shí)踐性的目的,channel是單向的。作為結(jié)論,兩個(gè)應(yīng)用如果有雙向通訊,它們需要兩個(gè)channel,每個(gè)方向一個(gè)

     

    如何使用Message channels

     

    現(xiàn)在我們來(lái)討論以下如何使用channel

     

    一對(duì)一或者一對(duì)多 當(dāng)你的應(yīng)用共享一些數(shù)據(jù),你希望只將它共享給一個(gè)應(yīng)用還是對(duì)它感興趣的所有應(yīng)用?要傳送數(shù)據(jù)到一個(gè)單獨(dú)的應(yīng)用,使用Point-to-Point Channel。這并不意味著發(fā)送到這個(gè)channel的每個(gè)數(shù)據(jù)都發(fā)送給同樣的接受者,因?yàn)橐粋€(gè)channel可能有多個(gè)接受者。它意味著,實(shí)際上,保證每個(gè)數(shù)據(jù)都被同一個(gè)應(yīng)用接收。如果你想讓所有接收應(yīng)用都能接收數(shù)據(jù),使用Publish-Subscribe Channel。當(dāng)你通過(guò)這種方式發(fā)送數(shù)據(jù),channel將高效的復(fù)制數(shù)據(jù)到每一個(gè)接收者。

     

    什么類型的數(shù)據(jù) 任何內(nèi)存中的數(shù)據(jù)都有一個(gè)類型。另一方面,所有數(shù)據(jù)都是一些bytes集合。消息系統(tǒng)工作同這類似,消息內(nèi)容必須符合某些類型以便接受者了解數(shù)據(jù)的結(jié)構(gòu)。Datatype Channel認(rèn)為在一個(gè)channel中的數(shù)據(jù)必須擁有同樣的類型。這也是為什么消息系統(tǒng)需要很多channel的主要原因(每個(gè)channel一種格式)。如果數(shù)據(jù)可以是任意的格式,那么消息系統(tǒng)在兩個(gè)應(yīng)用之間只需要兩條channel

     

    無(wú)效的和過(guò)期的消息 消息系統(tǒng)可以確定消息被正確的傳輸,但是它不能保證接受者知道如何處理它。接收者對(duì)數(shù)據(jù)格式和意義存在期望。當(dāng)它接收到一個(gè)不符合期望的消息,它什么也不能做。它們能作的,就是將這個(gè)陌生的消息放入到一個(gè)特別設(shè)計(jì)的Invalid Message Channel并希望某些監(jiān)控這個(gè)channel的工具能夠取出這個(gè)消息,并指出該如何處置它們。許多消息系統(tǒng)有一個(gè)類似的內(nèi)建特征,一個(gè)Dead Letter Channel,用來(lái)存放成功送出但卻無(wú)法成功投遞的消息。另外,一個(gè)系統(tǒng)管理工具應(yīng)該監(jiān)視Dead Letter Channel并且決定如何處置這些無(wú)法投遞的消息。

     

    故障檢測(cè) 如果一個(gè)消息系統(tǒng)發(fā)生故障或停機(jī)維護(hù),它的消息會(huì)怎樣?當(dāng)它重啟并重新運(yùn)行,它的消息能否還在它的channel中?默認(rèn)的:不會(huì);channel將消息存儲(chǔ)在內(nèi)存中。然而,Guaranteed Deliverychannel持久化以便將它們的消息存儲(chǔ)到硬盤上。這會(huì)影響效率,但會(huì)使消息更加可靠,即使消息系統(tǒng)是不可靠的。

     

    非消息客戶端 如果一個(gè)應(yīng)用不能連接到一個(gè)消息系統(tǒng)但是仍然想要參與消息怎么辦?通常它只能自認(rèn)倒霉了,但是如果消息系統(tǒng)可以通過(guò)某種方式連接到應(yīng)用系統(tǒng) 通過(guò)它的用戶界面,它的service API,它的數(shù)據(jù)庫(kù),或者一個(gè)TCP/IPHTTP這樣的網(wǎng)絡(luò)連接 那么消息系統(tǒng)可以使用一個(gè)Channel Adapter。這允許你連接到一個(gè)或多個(gè)連接到應(yīng)用的channel而不必改變應(yīng)用或者可能也不需要一個(gè)同應(yīng)用運(yùn)行在同一個(gè)機(jī)器上的消息客戶端。有時(shí)‘非消息客戶端’真的是一個(gè)消息客戶端,但是只有連接的是其他消息系統(tǒng)的時(shí)候。

     

    通訊中樞 隨著越來(lái)越多的企業(yè)應(yīng)用系統(tǒng)連接到消息系統(tǒng)以便通過(guò)消息暴露他們的功能,消息系統(tǒng)變成了企業(yè)中一站式功能的集散地。一個(gè)應(yīng)用只需簡(jiǎn)單的知道用哪個(gè)channel來(lái)請(qǐng)求功能,以及從哪個(gè)監(jiān)聽(tīng)結(jié)果。消息系統(tǒng)本質(zhì)上變成一個(gè)消息總線,一個(gè)提供所有企業(yè)應(yīng)用甚至變化中的應(yīng)用和功能的中樞。你可以更快速的集成。

     

    如你所見(jiàn),使用消息構(gòu)建應(yīng)用不僅僅是將他們連接到消息系統(tǒng)并發(fā)送消息。消息必須使用Message Channel來(lái)發(fā)送。Channel必須被設(shè)計(jì)為某個(gè)目的服務(wù),比如基于被共享的數(shù)據(jù)類型,共享數(shù)據(jù)的應(yīng)用類型,和接收數(shù)據(jù)的應(yīng)用。

     

    posted on 2005-11-17 22:56 fisher 閱讀(1295) 評(píng)論(1)  編輯  收藏 所屬分類: Programing

    評(píng)論

    # 【ESB專題】之二 - Message Channel及其相關(guān)模式 [TrackBack]  回復(fù)  更多評(píng)論   

    介紹消息ESB中的Message Channels的關(guān)注問(wèn)題及相關(guān)模式
    [引用提示]fisher on csdn 引用了該文章, 地址: http://blog.csdn.net/flyingbug/archive/2005/11/18/532678.aspx
    2005-11-18 23:32 | fisher on csdn
    主站蜘蛛池模板: 亚洲熟妇无码AV在线播放| 久久夜色精品国产亚洲av| 亚洲高清中文字幕免费| 久久精品国产精品亚洲艾草网美妙 | 亚洲AV无码一区二区三区牲色| 亚洲国产无套无码av电影| 日韩av无码久久精品免费| 麻豆va在线精品免费播放 | 久久午夜免费视频| 日本免费中文字幕| 亚洲xxxx视频| 精品亚洲麻豆1区2区3区| 亚洲大尺度无码专区尤物| 亚洲精品视频免费观看| 日韩精品免费电影| 成人午夜性A级毛片免费| 91大神在线免费观看| 日韩成人免费视频| a毛片在线看片免费| 亚洲妇女水蜜桃av网网站| 日产国产精品亚洲系列| 日日操夜夜操免费视频| 最近2019中文字幕免费看最新 | 亚洲人成在线播放网站| 亚洲欧洲精品成人久久奇米网| 国产yw855.c免费视频| 亚洲免费人成在线视频观看| 三年片免费高清版| 亚洲 日韩 色 图网站| 亚洲性色高清完整版在线观看| 久久精品国产亚洲AV无码偷窥| 亚洲国产精久久久久久久| 久久综合日韩亚洲精品色| 亚洲色欲久久久综合网| 亚洲VA中文字幕无码毛片| 亚洲av最新在线网址| 久久精品国产亚洲av日韩| 亚洲沟沟美女亚洲沟沟| 亚洲香蕉久久一区二区| 亚洲伊人色欲综合网| 久久精品国产亚洲麻豆|