出版時(shí)間:2010年1月 出版社:電子工業(yè)出版社 作者:Mark Richards,Richard Monson-Haefel,David A.Chappell 頁(yè)數(shù):336 譯者:閆懷志
Tag標(biāo)簽:無(wú)
前言
獲邀擔(dān)綱《Java消息服務(wù)(第2版)》的翻譯,我的思緒一下回到了10年前。當(dāng)時(shí),不僅是初出茅廬的我,甚至很多資深的同行,都在為不同系統(tǒng)之間的信息交換而頭疼不已:一方面,數(shù)據(jù)集成和系統(tǒng)整合的需求非常強(qiáng)烈;另一方面,信息交換的技術(shù)實(shí)現(xiàn)不僅難度很大,而且實(shí)現(xiàn)方式也因各有利弊而難于選擇。在技術(shù)路線(xiàn)的選擇上,我們究竟何去何從?這在“霧里看花”的當(dāng)年,真不啻于一場(chǎng)賭博。因?yàn)楹髞?lái)的事實(shí)證明,即便是其中較為常用的CORBA、DCOM、RMI等遠(yuǎn)程過(guò)程調(diào)用(RPC)中間件技術(shù),雖可以解決一些問(wèn)題,但它們?cè)诮研?、性能和可伸縮性方面的表現(xiàn)很難讓人滿(mǎn)意?! ∑陂g,從我一位留美的同學(xué)處,偶然獲悉了Java消息服務(wù)(JMS)機(jī)制,令我聞之一震——它很好地解決了讓我困惑良久的在不同系統(tǒng)間進(jìn)行數(shù)據(jù)和功能共享的問(wèn)題。我不僅自己如獲至寶,還因?yàn)槁殬I(yè)的關(guān)系,在我的領(lǐng)地——三尺講臺(tái)上竭力傳播這一思路?! 『?jiǎn)而言之,JMS是1999年由 Sun Microsystems領(lǐng)銜開(kāi)發(fā)的一種訪(fǎng)問(wèn)消息系統(tǒng)的方法,也就是供Java程序員使用的面向消息的中間件(MOM)。這種基于消息傳送的異步處理模型,具有非阻塞的調(diào)用特性。發(fā)送者將消息發(fā)送給消息服務(wù)器,服務(wù)器會(huì)在合適的時(shí)候再將消息轉(zhuǎn)發(fā)給接收者;發(fā)送和接收采用異步方式,這就意味著發(fā)送者無(wú)須等待,發(fā)送者和接收者的生命周期也無(wú)需相同,而且發(fā)送者還可以將消息傳給多個(gè)接收者。如此一來(lái),這種異步處理方式就大大提升了應(yīng)用程序的健壯性、性能和可伸縮性,使數(shù)據(jù)集成和系統(tǒng)整合工作變得易如反掌,特別是在分布式應(yīng)用上讓同步處理方式望塵莫及。Java消息服務(wù)作為一個(gè)與具體平臺(tái)無(wú)關(guān)的API,已經(jīng)得到絕大多數(shù)MOM提供商的支持?! ”緯?shū)深入淺出地講解了JMS規(guī)范的底層技術(shù)、Java類(lèi)和接口、編程模型及其不同實(shí)現(xiàn)。尤其值得指出的是,當(dāng)年我學(xué)習(xí)Java消息服務(wù)的啟蒙教材,正是O’Reilly在2000年出版的本書(shū)第1版。所以看到第2版,真是一見(jiàn)如故。較之9年前的第1版,除了著名的Richard Monson-Haefel和David A.Chappell之外,又有消息傳送機(jī)制、面向服務(wù)體系結(jié)構(gòu)和事務(wù)管理領(lǐng)域的公認(rèn)權(quán)威Mark Richards來(lái)?yè)?dān)綱第一作者。我在仔細(xì)研讀之后發(fā)現(xiàn),本版繼承了初版的優(yōu)點(diǎn),但在內(nèi)容及結(jié)構(gòu)方面有了很大變化,某些地方甚至可以說(shuō)是“質(zhì)”變,究其原因主要有二:其一,初版兩年后(即2002年3月)發(fā)布了JMS 1.1,統(tǒng)一了消息域。新版必須為適用JMS 1.1而修訂;其二,經(jīng)過(guò)10年的發(fā)展,Java平臺(tái)和消息傳送機(jī)制日臻完善,消息驅(qū)動(dòng)bean、Spring消息框架、事件驅(qū)動(dòng)體系結(jié)構(gòu)(EDA)、面向服務(wù)體系結(jié)構(gòu)(SOA)、RESTful JMS接口,以及企業(yè)服務(wù)總線(xiàn)(ESB)等新的消息傳送技術(shù)也層出不窮。這些亮點(diǎn)不僅是第2版的精華所在,它們本身也代表了Java消息服務(wù)技術(shù)的發(fā)展方向?! ‘?dāng)然,任何一項(xiàng)技術(shù)都是有利有弊的,也都會(huì)經(jīng)歷發(fā)展、鼎盛直至消亡的生命旅程,Java消息服務(wù)也不例外。無(wú)須諱言,近些年來(lái)在異構(gòu)系統(tǒng)集成領(lǐng)域,Java消息服務(wù)就遭到了Web服務(wù)的強(qiáng)力挑戰(zhàn)。不過(guò),在Web服務(wù)解決可靠性等問(wèn)題之前,Java消息服務(wù)仍然是異構(gòu)系統(tǒng)集成的不二之選。我相信,如果您讀完了本書(shū),并切實(shí)領(lǐng)會(huì)了JMS的精髓和要義之后,會(huì)十分認(rèn)同這個(gè)觀點(diǎn)。 翻譯一本書(shū),弄不好就會(huì)是“出力不討好的苦差”,因?yàn)闊o(wú)論是技術(shù)本身、原著水平、讀者領(lǐng)悟力等哪個(gè)環(huán)節(jié)出了問(wèn)題,板子通常都會(huì)打在翻譯者身上。當(dāng)然就本書(shū)而言,JMS技術(shù)本身、原著的水平和讀者的領(lǐng)悟力都不會(huì)有什么問(wèn)題。所以,既然我愿意做這樣的知識(shí)傳播者,那就要勇于承擔(dān)所有的責(zé)任。套用我所敬仰的一位長(zhǎng)者之言:我只希望在我翻譯完以后,全體讀者能說(shuō)一句,他是一個(gè)負(fù)責(zé)的譯者,不是敷衍了事的譯者,我就很滿(mǎn)意了。如果他們?cè)倏犊稽c(diǎn),說(shuō)閆懷志某些地方譯得還不錯(cuò),我就謝天謝地了?! ”緯?shū)翻譯期間得到了電子工業(yè)出版社博文視點(diǎn)公司徐定翔、白愛(ài)萍、楊繡國(guó)、陳元玉、許瑩等編輯的熱心幫助。書(shū)中絕大部分術(shù)語(yǔ)采用了Sun公司的標(biāo)準(zhǔn)譯法,在此一并致謝。最后,我要感謝家人的支持,否則完成這樣一項(xiàng)工作幾乎是不可想象的。由于譯者水平有限,加之時(shí)間較緊,雖已盡力避免錯(cuò)誤,難免仍有疏漏,懇請(qǐng)廣大讀者將意見(jiàn)和建議發(fā)至:bityhz001@sina.com,不勝感激?! ¢Z懷志 2009年秋于北京中關(guān)村
內(nèi)容概要
《Java消息服務(wù)(第2版)》深入淺出地講解了JMS1.1規(guī)范的底層技術(shù)、Java類(lèi)和接口、編程模型及其不同實(shí)現(xiàn)等Java消息服務(wù)(JMS)和消息傳送機(jī)制關(guān)鍵技術(shù)。通過(guò)對(duì)支持點(diǎn)對(duì)點(diǎn)和發(fā)布/訂閱“消息傳送”的標(biāo)準(zhǔn)API的完全解讀以及具體實(shí)例,介紹了如何利用“廠(chǎng)商無(wú)關(guān)”的JMS來(lái)解決許多體系結(jié)構(gòu)的面臨的挑戰(zhàn),比如異構(gòu)系統(tǒng)和應(yīng)用程序集成、提高可伸縮性、降低系統(tǒng)瓶頸、支持并發(fā)處理,以及提升靈活性和敏捷性等。
書(shū)籍目錄
推薦序 I前言 III第1章 消息傳送機(jī)制基礎(chǔ) 11.1 消息傳送機(jī)制的優(yōu)點(diǎn) 31.1.1 異構(gòu)集成 31.1.2 緩解系統(tǒng)瓶頸 31.1.3 提高可伸縮性 41.1.4 提高最終用戶(hù)生產(chǎn)率 41.1.5 體系結(jié)構(gòu)靈活性和敏捷性 51.2 企業(yè)消息傳送 51.2.1 集中式體系結(jié)構(gòu) 71.2.2 分散式體系結(jié)構(gòu) 71.2.3 混合體系結(jié)構(gòu) 81.2.4 以集中式體系結(jié)構(gòu)作為模型 81.3 消息傳送模型 91.3.1 點(diǎn)對(duì)點(diǎn)模型 101.3.2 發(fā)布/訂閱模型 101.4 JMS API 111.4.1 點(diǎn)對(duì)點(diǎn)API 131.4.2 發(fā)布/訂閱API 141.5 實(shí)際場(chǎng)景 141.5.1 面向服務(wù)體系結(jié)構(gòu) 151.5.2 事件驅(qū)動(dòng)體系結(jié)構(gòu) 161.5.3 異構(gòu)平臺(tái)集成 161.5.4 企業(yè)應(yīng)用集成 171.5.5 企業(yè)到企業(yè) 171.5.6 地理分散 181.5.7 信息廣播 181.5.8 構(gòu)建動(dòng)態(tài)系統(tǒng) 181.6 RPC和異步消息傳送 211.6.1 緊密耦合的RPC 211.6.2 企業(yè)消息傳送 23第2章 編寫(xiě)一個(gè)簡(jiǎn)單的示例程序 252.1 聊天應(yīng)用程序 252.1.1 從Chat示例開(kāi)始 282.1.2 分析源代碼 302.1.3 會(huì)話(huà)和線(xiàn)程 39第3章 深入剖析一條JMS消息 413.1 消息頭 423.1.1 自動(dòng)分配的消息頭 433.1.2 開(kāi)發(fā)者分配的消息頭 463.2 消息屬性 473.2.1 應(yīng)用程序特定的屬性 473.2.2 JMS定義的屬性 493.2.3 提供者特定的屬性 503.3 消息類(lèi)型 503.3.1 Message 503.3.2 TextMessage 513.3.3 ObjectMessage 523.3.4 BytesMessage 533.3.5 StreamMessage 563.3.6 MapMessage 583.3.7 只讀消息 603.3.8 客戶(hù)端確認(rèn)的消息 613.3.9 消息的互操作性和可移植性 61第4章 點(diǎn)對(duì)點(diǎn)消息傳送模型 634.1 點(diǎn)對(duì)點(diǎn)模型概覽 634.1.1 何時(shí)使用點(diǎn)對(duì)點(diǎn)消息傳送模型 664.2 QBorrower和QLender應(yīng)用程序 674.2.1 配置并運(yùn)行應(yīng)用程序 674.2.2 QBorrower類(lèi) 694.2.3 QLender類(lèi) 764.3 消息關(guān)聯(lián) 814.4 動(dòng)態(tài)隊(duì)列對(duì)受管隊(duì)列 834.5 使用多個(gè)接收者實(shí)現(xiàn)負(fù)載均衡 844.6 分析一個(gè)隊(duì)列 85第5章 發(fā)布/訂閱消息傳送模型 875.1 發(fā)布/訂閱模型概覽 875.1.1 何時(shí)使用發(fā)布/訂閱消息傳送模型 895.2 TBorrower和TLender應(yīng)用程序 905.2.1 配置并運(yùn)行應(yīng)用程序 905.2.2 TLender類(lèi) 925.2.3 TBorrower類(lèi) 965.3 持久訂閱者和非持久訂閱者 1005.4 動(dòng)態(tài)訂閱者和受管訂閱者 1015.5 取消訂閱動(dòng)態(tài)持久訂閱者 1045.6 臨時(shí)主題 104第6章 消息過(guò)濾 1076.1 消息選擇器 1096.1.1 標(biāo)識(shí)符 1106.1.2 常量 1116.1.3 比較運(yùn)算符 1116.1.4 算術(shù)運(yùn)算符 1136.2 聲明一個(gè)消息選擇器 1146.3 消息選擇器示例 1166.3.1 管理HMO的索賠申請(qǐng) 1166.3.2 關(guān)于存貨的特定報(bào)價(jià)通知 1166.3.3 優(yōu)先級(jí)處理 1166.3.4 證券交易訂單審計(jì) 1176.4 未傳送語(yǔ)義 1176.5 設(shè)計(jì)注意事項(xiàng) 118第7章 保證消息傳送和事務(wù) 1257.1 保證消息傳送 1257.1.1 消息自主性 1267.1.2 保存并轉(zhuǎn)發(fā)消息傳送 1267.1.3 消息確認(rèn)和故障情況 1267.2 消息確認(rèn) 1277.2.1 AUTO_ACKNOWLEDGE 1277.2.2 DUPS_OK_ACKNOWLEDGE 1327.2.3 CLIENT_ACKNOWLEDGE 1327.3 消息組和確認(rèn) 1337.3.1 在應(yīng)用程序中處理消息的重新傳送 1347.3.2 消息組示例 1347.3.3 消息編組和多個(gè)接收者 1437.4 事務(wù)性消息 1457.4.1 創(chuàng)建并使用一個(gè)JMS事務(wù) 1477.4.2 事務(wù)性會(huì)話(huà)示例 1477.4.3 分布式事務(wù) 1507.5 丟失連接 1517.5.1 ExceptionListener示例 1527.6 停用消息隊(duì)列 153第8章 Java EE和消息驅(qū)動(dòng)bean 1558.1 Java EE概覽 1558.1.1 企業(yè)級(jí)JavaBean 1568.2 企業(yè)級(jí)JavaBean 3.0(EJB3)概覽 1578.2.1 簡(jiǎn)化bean開(kāi)發(fā) 1588.2.2 依賴(lài)注入 1588.2.3 簡(jiǎn)化回調(diào)方法 1598.2.4 通過(guò)編程方式默認(rèn) 1598.2.5 攔截器 1608.2.6 Java持久性API 1628.3 Java EE中的JMS資源 1628.3.1 JNDI環(huán)境命名上下文(ENC) 1648.4 消息驅(qū)動(dòng)bean 1668.4.1 并發(fā)處理和可伸縮性 1688.4.2 定義消息驅(qū)動(dòng)bean 1688.5 消息驅(qū)動(dòng)bean用例 1718.5.1 消息門(mén)面 1718.5.2 轉(zhuǎn)換和路由選擇 173第9章 Spring和JMS 1779.1 Spring消息傳送體系結(jié)構(gòu) 1779.2 JmsTemplate概覽 1809.2.1 Send方法 1819.2.2 convertAndSend方法 1819.2.3 receive和receiveSelected方法 1829.2.4 receiveAndConvert方法 1839.3 連接工廠(chǎng)和JMS目的地 1849.3.1 使用JNDI 1849.3.2 使用本地類(lèi) 1879.4 發(fā)送消息 1899.4.1 使用send方法 1909.4.2 使用convertAndSend方法 1919.4.3 使用非默認(rèn)JMS目的地 1939.5 同步接收消息 1959.6 消息驅(qū)動(dòng)POJO 1989.6.1 Spring消息偵聽(tīng)器容器 1989.6.2 MDP可選方案1:使用MessageListener接口 1999.6.3 MDP可選方案2:使用SessionAwareMessageListener接口 2019.6.4 MDP可選方案3:使用MessageListenerAdapter 2029.6.5 消息轉(zhuǎn)換限制 2079.7 Spring JMS命名空間 2089.7.1 消息屬性 2099.7.2 元素屬性 211第10章 部署注意事項(xiàng) 21310.1 性能、可伸縮性和可靠性 21310.1.1 確定消息吞吐量需求 21310.1.2 測(cè)試實(shí)際場(chǎng)景 21410.2 組播與否 21710.2.1 TCP/IP 21810.2.2 UDP 21810.2.3 IP組播 21810.2.4 基于IP組播的消息傳送 21910.2.5 關(guān)鍵要點(diǎn) 22110.3 安全性 22210.3.1 認(rèn)證 22210.3.2 授權(quán) 22310.3.3 安全通信 22410.3.4 防火墻和HTTP通道 22410.4 連接外部世界 22510.5 橋接到其他消息傳送系統(tǒng) 227第11章 消息傳送設(shè)計(jì)注意事項(xiàng) 22911.1 內(nèi)部目的地與外部目的地 22911.1.1 內(nèi)部目的地拓?fù)浣Y(jié)構(gòu) 23011.1.2 外部目的地拓?fù)浣Y(jié)構(gòu) 23111.2 請(qǐng)求/應(yīng)答消息傳送設(shè)計(jì) 23211.3 消息傳送設(shè)計(jì)反模式 23611.3.1 單用途隊(duì)列 23611.3.2 過(guò)度使用消息優(yōu)先級(jí) 24011.3.3 濫用消息頭 240附錄A Java消息服務(wù)API 245附錄B 消息頭 265附錄C 消息屬性 277附錄D 安裝和配置ActiveMQ 285索引 291
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版