在本期的J2EE探索者( J2EE pathfinder)中,java 開發(fā)者和咨詢顧問Kyle Gabhart 解釋了為什么消息服務(wù)對于企業(yè)的體系結(jié)構(gòu)來說是至關(guān)重要的,您的解決方案必須克服什么類型的障礙,以及 除了Java消息服務(wù)(Java Message Service ,JMS)之外,還有哪些替代的解決方案。在本文的結(jié)尾,他分析了三種可用的解決方案(簡單JMS客戶機(Simple JMS Client)、結(jié)合JMS使用的會話bean, 以及消息驅(qū)動bean),并且提供了一些特定的指導(dǎo)方針來衡量這些選項。
說到對消息傳遞解決方案的選擇,您可以像配手套那樣找到適合于企業(yè)的解決方案。您的消息傳遞框架必須能夠在一組應(yīng)用和企業(yè)資源之間進(jìn)行通信。而且,該消息傳遞框架必須快速、可靠地完成這一任務(wù)。此外,面對日復(fù)一日的騷擾和緊急情況,它必須表現(xiàn)得天衣無縫。
為了根據(jù)您的需求選擇適當(dāng)?shù)南鬟f解決方案,首先應(yīng)該對您企業(yè)當(dāng)前的組成結(jié)構(gòu)以及將來的發(fā)展趨勢有一個清醒的熟悉。此外,假如能夠透徹地理解消息傳遞框架在完成目標(biāo)的過程中必須克服的障礙,那么對于解決方案的選擇將會很有幫助。最后,您要知道 可選擇的范圍:有哪些可用的技術(shù),以及各種技術(shù)對于不同的環(huán)境和需求的適用情況如何。
在本期的J2EE 探索者中,我們將一一闡述以上要點。首先是對企業(yè)消息傳遞的概述,在此我們將著眼于消息傳遞在您企業(yè)中所扮演的角色,并在建立可靠的通信方面給出了一些挑戰(zhàn)。接著,我們將從體系結(jié)構(gòu)的角度來快速 了解一下,在一個典型的企業(yè)網(wǎng)絡(luò)環(huán)境中,J2EE 消息傳遞技術(shù)如何與面向消息的中間件協(xié)同工作。然后,我們將針對Java消息服務(wù)(Java Message Service ,JMS)和J2EE的消息傳遞包展開更具體的討論。我們將分別論述三種類型的J2EE消息傳遞客戶機的基本目標(biāo)和功能,而且您也可以了解到每種類型的 J2EE消息傳遞客戶機各自的優(yōu)勢和劣勢所在。最后,我們將分析一些常見的消息傳遞場景和解決方案,這將有助于您為您的企業(yè)選擇最好的J2EE消息傳遞解決方案。
企業(yè)消息傳遞101
企業(yè)消息傳遞框架被設(shè)計用于使得一個或多個應(yīng)用能夠克服各種障礙進(jìn)行通信。常見的屏障包括:兩個系統(tǒng)同時運行(同步通信)的需求,多個應(yīng)用獲取同一條消息(多重傳輸)的需求,大多數(shù)系統(tǒng)都彼此異構(gòu),以及網(wǎng)絡(luò)故障等。
M許多企業(yè)的體系結(jié)構(gòu)依靠于面向消息的中間件系統(tǒng)(MOM)來為不同類型的系統(tǒng)提供消息通道。MOM為應(yīng)用提供了一種公共的、可靠的方式,使這些應(yīng)用能夠輕松地創(chuàng)建、交換和處理消息,而無需考慮消息傳遞客戶機的實現(xiàn)細(xì)節(jié)。消息被發(fā)送到服務(wù)器目的地和域 (domain),而不是發(fā)送到物理地址。消息傳遞客戶機只需簡單地聲明對某個特定的域和目的地感愛好,提供適當(dāng)?shù)陌踩粤钆疲╯ecurity token)以獲得訪問該域的權(quán)限,然后通過那個目的地與消息傳遞服務(wù)器進(jìn)行交互。
從概念上來講,這與現(xiàn)實生活中真實郵件的傳遞方式?jīng)]什么不同。消息的發(fā)送方只負(fù)責(zé)使用正確的包裝,提供正確的地址,并附上適當(dāng)?shù)泥]資。 郵局(這里是一個MOM系統(tǒng))處理 與消息的安全可靠的傳遞相關(guān)的所有問題,而不 管出現(xiàn)在他們面前的任何障礙(機器故障,天氣惡劣,等等)。
在一個MOM系統(tǒng)中,客戶機之間的耦合性比較弱,這答應(yīng)它們不必真正地全天“在線”便能維持服務(wù)的最佳質(zhì)量。假如能夠去掉應(yīng)用一直處于可用狀態(tài)這一需求,那么維護(hù)和伸縮性將變得更加易于治理。可以在一天中的任何時候?qū)?yīng)用離線,更新應(yīng)用,或者作為例行的維護(hù)工作刷新應(yīng)用,而不必?fù)?dān)心會影響服務(wù)的質(zhì)量。
Java 消息服務(wù)
MOM 服務(wù)器答應(yīng)不同類型的系統(tǒng)交換消息,但是每個MOM供給商都有其特有的處理消息的API。這種標(biāo)準(zhǔn)化的缺乏對于Java技術(shù)開發(fā)范例來說是不可接受的。為了充分利用已有的MOM基礎(chǔ)設(shè)施,同時又不失標(biāo)準(zhǔn)化,J2EE平臺提供了JMS。
Java 標(biāo)準(zhǔn)化
為了提供平臺無關(guān)的和供給商無關(guān)的解決方案,所有Java技術(shù)都可以分成兩個部分:
不管您使用的是何種Java技術(shù),您首先要編寫使用了技術(shù)規(guī)范中提供的接口的應(yīng)用組件,然后在運行時提供某一特定供給商對這些接口的實現(xiàn)。在J2EE中,企業(yè)消息傳遞的規(guī)范和API是JMS。
JMS 定義了在Java企業(yè)系統(tǒng)中傳遞消息的規(guī)則,并且聲明了一些方便應(yīng)用組件和消息傳遞系統(tǒng)(通常是MOM)之間的消息交換的接口。JMS客戶機向MOM服務(wù)器上的目的地開放連接,然后在那個目的地上發(fā)送和接收消息。JMS卸下了 保證傳送(guaranteed delivery)、消息通知(message notification)、消息耐久性(message durability)以及消息傳遞系統(tǒng)中所有底層網(wǎng)絡(luò)和路由問題的負(fù)擔(dān)。JMS和MOM能夠很好地協(xié)同工作,因為它們都劃清了消息傳遞客戶機和服務(wù)器之間的責(zé)任界限。
消息傳遞的類型
JMS 支持兩種基本的消息傳遞機制。第一種機制是點到點的消息傳遞(point-to-point messaging),在這種機制下,消息由一個發(fā)布者(發(fā)送方)發(fā)送,由訂閱者(接收方)接收。另一種機制是發(fā)布-訂閱式的消息傳遞(publish- subscribe messaging),在這種機制下,消息由一個或多個發(fā)布者發(fā)送,由一個或多個訂閱者接收。盡管這兩種機制是JMS的實際基礎(chǔ),很多人還是按照三種消息傳遞模型來看待這項技術(shù):
新聞熱點
疑難解答