Java消息服務(wù)

出版時間:2010年1月  出版社:電子工業(yè)出版社  作者:Mark Richards,Richard Monson-Haefel,David A.Chappell  頁數(shù):336  譯者:閆懷志  
Tag標(biāo)簽:無  

前言

  獲邀擔(dān)綱《Java消息服務(wù)(第2版)》的翻譯,我的思緒一下回到了10年前。當(dāng)時,不僅是初出茅廬的我,甚至很多資深的同行,都在為不同系統(tǒng)之間的信息交換而頭疼不已:一方面,數(shù)據(jù)集成和系統(tǒng)整合的需求非常強(qiáng)烈;另一方面,信息交換的技術(shù)實(shí)現(xiàn)不僅難度很大,而且實(shí)現(xiàn)方式也因各有利弊而難于選擇。在技術(shù)路線的選擇上,我們究竟何去何從?這在“霧里看花”的當(dāng)年,真不啻于一場賭博。因?yàn)楹髞淼氖聦?shí)證明,即便是其中較為常用的CORBA、DCOM、RMI等遠(yuǎn)程過程調(diào)用(RPC)中間件技術(shù),雖可以解決一些問題,但它們在健壯性、性能和可伸縮性方面的表現(xiàn)很難讓人滿意?! ∑陂g,從我一位留美的同學(xué)處,偶然獲悉了Java消息服務(wù)(JMS)機(jī)制,令我聞之一震——它很好地解決了讓我困惑良久的在不同系統(tǒng)間進(jìn)行數(shù)據(jù)和功能共享的問題。我不僅自己如獲至寶,還因?yàn)槁殬I(yè)的關(guān)系,在我的領(lǐng)地——三尺講臺上竭力傳播這一思路?! 『喍灾?,JMS是1999年由 Sun Microsystems領(lǐng)銜開發(fā)的一種訪問消息系統(tǒng)的方法,也就是供Java程序員使用的面向消息的中間件(MOM)。這種基于消息傳送的異步處理模型,具有非阻塞的調(diào)用特性。發(fā)送者將消息發(fā)送給消息服務(wù)器,服務(wù)器會在合適的時候再將消息轉(zhuǎn)發(fā)給接收者;發(fā)送和接收采用異步方式,這就意味著發(fā)送者無須等待,發(fā)送者和接收者的生命周期也無需相同,而且發(fā)送者還可以將消息傳給多個接收者。如此一來,這種異步處理方式就大大提升了應(yīng)用程序的健壯性、性能和可伸縮性,使數(shù)據(jù)集成和系統(tǒng)整合工作變得易如反掌,特別是在分布式應(yīng)用上讓同步處理方式望塵莫及。Java消息服務(wù)作為一個與具體平臺無關(guān)的API,已經(jīng)得到絕大多數(shù)MOM提供商的支持?! ”緯钊霚\出地講解了JMS規(guī)范的底層技術(shù)、Java類和接口、編程模型及其不同實(shí)現(xiàn)。尤其值得指出的是,當(dāng)年我學(xué)習(xí)Java消息服務(wù)的啟蒙教材,正是O’Reilly在2000年出版的本書第1版。所以看到第2版,真是一見如故。較之9年前的第1版,除了著名的Richard Monson-Haefel和David A.Chappell之外,又有消息傳送機(jī)制、面向服務(wù)體系結(jié)構(gòu)和事務(wù)管理領(lǐng)域的公認(rèn)權(quán)威Mark Richards來擔(dān)綱第一作者。我在仔細(xì)研讀之后發(fā)現(xiàn),本版繼承了初版的優(yōu)點(diǎn),但在內(nèi)容及結(jié)構(gòu)方面有了很大變化,某些地方甚至可以說是“質(zhì)”變,究其原因主要有二:其一,初版兩年后(即2002年3月)發(fā)布了JMS 1.1,統(tǒng)一了消息域。新版必須為適用JMS 1.1而修訂;其二,經(jīng)過10年的發(fā)展,Java平臺和消息傳送機(jī)制日臻完善,消息驅(qū)動bean、Spring消息框架、事件驅(qū)動體系結(jié)構(gòu)(EDA)、面向服務(wù)體系結(jié)構(gòu)(SOA)、RESTful JMS接口,以及企業(yè)服務(wù)總線(ESB)等新的消息傳送技術(shù)也層出不窮。這些亮點(diǎn)不僅是第2版的精華所在,它們本身也代表了Java消息服務(wù)技術(shù)的發(fā)展方向?! ‘?dāng)然,任何一項(xiàng)技術(shù)都是有利有弊的,也都會經(jīng)歷發(fā)展、鼎盛直至消亡的生命旅程,Java消息服務(wù)也不例外。無須諱言,近些年來在異構(gòu)系統(tǒng)集成領(lǐng)域,Java消息服務(wù)就遭到了Web服務(wù)的強(qiáng)力挑戰(zhàn)。不過,在Web服務(wù)解決可靠性等問題之前,Java消息服務(wù)仍然是異構(gòu)系統(tǒng)集成的不二之選。我相信,如果您讀完了本書,并切實(shí)領(lǐng)會了JMS的精髓和要義之后,會十分認(rèn)同這個觀點(diǎn)。  翻譯一本書,弄不好就會是“出力不討好的苦差”,因?yàn)闊o論是技術(shù)本身、原著水平、讀者領(lǐng)悟力等哪個環(huán)節(jié)出了問題,板子通常都會打在翻譯者身上。當(dāng)然就本書而言,JMS技術(shù)本身、原著的水平和讀者的領(lǐng)悟力都不會有什么問題。所以,既然我愿意做這樣的知識傳播者,那就要勇于承擔(dān)所有的責(zé)任。套用我所敬仰的一位長者之言:我只希望在我翻譯完以后,全體讀者能說一句,他是一個負(fù)責(zé)的譯者,不是敷衍了事的譯者,我就很滿意了。如果他們再慷慨一點(diǎn),說閆懷志某些地方譯得還不錯,我就謝天謝地了。  本書翻譯期間得到了電子工業(yè)出版社博文視點(diǎn)公司徐定翔、白愛萍、楊繡國、陳元玉、許瑩等編輯的熱心幫助。書中絕大部分術(shù)語采用了Sun公司的標(biāo)準(zhǔn)譯法,在此一并致謝。最后,我要感謝家人的支持,否則完成這樣一項(xiàng)工作幾乎是不可想象的。由于譯者水平有限,加之時間較緊,雖已盡力避免錯誤,難免仍有疏漏,懇請廣大讀者將意見和建議發(fā)至:bityhz001@sina.com,不勝感激?! ¢Z懷志  2009年秋于北京中關(guān)村

內(nèi)容概要

  《Java消息服務(wù)(第2版)》深入淺出地講解了JMS1.1規(guī)范的底層技術(shù)、Java類和接口、編程模型及其不同實(shí)現(xiàn)等Java消息服務(wù)(JMS)和消息傳送機(jī)制關(guān)鍵技術(shù)。通過對支持點(diǎn)對點(diǎn)和發(fā)布/訂閱“消息傳送”的標(biāo)準(zhǔn)API的完全解讀以及具體實(shí)例,介紹了如何利用“廠商無關(guān)”的JMS來解決許多體系結(jié)構(gòu)的面臨的挑戰(zhàn),比如異構(gòu)系統(tǒng)和應(yīng)用程序集成、提高可伸縮性、降低系統(tǒng)瓶頸、支持并發(fā)處理,以及提升靈活性和敏捷性等。

書籍目錄

推薦序 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 提高最終用戶生產(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)對點(diǎn)模型 101.3.2 發(fā)布/訂閱模型 101.4 JMS API 111.4.1 點(diǎn)對點(diǎn)API 131.4.2 發(fā)布/訂閱API 141.5 實(shí)際場景 141.5.1 面向服務(wù)體系結(jié)構(gòu) 151.5.2 事件驅(qū)動體系結(jié)構(gòu) 161.5.3 異構(gòu)平臺集成 161.5.4 企業(yè)應(yīng)用集成 171.5.5 企業(yè)到企業(yè) 171.5.6 地理分散 181.5.7 信息廣播 181.5.8 構(gòu)建動態(tài)系統(tǒng) 181.6 RPC和異步消息傳送 211.6.1 緊密耦合的RPC 211.6.2 企業(yè)消息傳送 23第2章 編寫一個簡單的示例程序 252.1 聊天應(yīng)用程序 252.1.1 從Chat示例開始 282.1.2 分析源代碼 302.1.3 會話和線程 39第3章 深入剖析一條JMS消息 413.1 消息頭 423.1.1 自動分配的消息頭 433.1.2 開發(fā)者分配的消息頭 463.2 消息屬性 473.2.1 應(yīng)用程序特定的屬性 473.2.2 JMS定義的屬性 493.2.3 提供者特定的屬性 503.3 消息類型 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 客戶端確認(rèn)的消息 613.3.9 消息的互操作性和可移植性 61第4章 點(diǎn)對點(diǎn)消息傳送模型 634.1 點(diǎn)對點(diǎn)模型概覽 634.1.1 何時使用點(diǎn)對點(diǎn)消息傳送模型 664.2 QBorrower和QLender應(yīng)用程序 674.2.1 配置并運(yùn)行應(yīng)用程序 674.2.2 QBorrower類 694.2.3 QLender類 764.3 消息關(guān)聯(lián) 814.4 動態(tài)隊列對受管隊列 834.5 使用多個接收者實(shí)現(xiàn)負(fù)載均衡 844.6 分析一個隊列 85第5章 發(fā)布/訂閱消息傳送模型 875.1 發(fā)布/訂閱模型概覽 875.1.1 何時使用發(fā)布/訂閱消息傳送模型 895.2 TBorrower和TLender應(yīng)用程序 905.2.1 配置并運(yùn)行應(yīng)用程序 905.2.2 TLender類 925.2.3 TBorrower類 965.3 持久訂閱者和非持久訂閱者 1005.4 動態(tài)訂閱者和受管訂閱者 1015.5 取消訂閱動態(tài)持久訂閱者 1045.6 臨時主題 104第6章 消息過濾 1076.1 消息選擇器 1096.1.1 標(biāo)識符 1106.1.2 常量 1116.1.3 比較運(yùn)算符 1116.1.4 算術(shù)運(yùn)算符 1136.2 聲明一個消息選擇器 1146.3 消息選擇器示例 1166.3.1 管理HMO的索賠申請 1166.3.2 關(guān)于存貨的特定報價通知 1166.3.3 優(yōu)先級處理 1166.3.4 證券交易訂單審計 1176.4 未傳送語義 1176.5 設(shè)計注意事項(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 消息編組和多個接收者 1437.4 事務(wù)性消息 1457.4.1 創(chuàng)建并使用一個JMS事務(wù) 1477.4.2 事務(wù)性會話示例 1477.4.3 分布式事務(wù) 1507.5 丟失連接 1517.5.1 ExceptionListener示例 1527.6 停用消息隊列 153第8章 Java EE和消息驅(qū)動bean 1558.1 Java EE概覽 1558.1.1 企業(yè)級JavaBean 1568.2 企業(yè)級JavaBean 3.0(EJB3)概覽 1578.2.1 簡化bean開發(fā) 1588.2.2 依賴注入 1588.2.3 簡化回調(diào)方法 1598.2.4 通過編程方式默認(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ū)動bean 1668.4.1 并發(fā)處理和可伸縮性 1688.4.2 定義消息驅(qū)動bean 1688.5 消息驅(qū)動bean用例 1718.5.1 消息門面 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 連接工廠和JMS目的地 1849.3.1 使用JNDI 1849.3.2 使用本地類 1879.4 發(fā)送消息 1899.4.1 使用send方法 1909.4.2 使用convertAndSend方法 1919.4.3 使用非默認(rèn)JMS目的地 1939.5 同步接收消息 1959.6 消息驅(qū)動POJO 1989.6.1 Spring消息偵聽器容器 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 測試實(shí)際場景 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è)計注意事項(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 請求/應(yīng)答消息傳送設(shè)計 23211.3 消息傳送設(shè)計反模式 23611.3.1 單用途隊列 23611.3.2 過度使用消息優(yōu)先級 24011.3.3 濫用消息頭 240附錄A Java消息服務(wù)API 245附錄B 消息頭 265附錄C 消息屬性 277附錄D 安裝和配置ActiveMQ 285索引 291

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    Java消息服務(wù) PDF格式下載


用戶評論 (總計0條)

 
 

推薦圖書


 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7