Spring JMS消息處理
在Spring系列的第4期也是***一期中,我將介紹Spring JMS(Java消息服務)框架的特性。JMS PG定義了Java 應用程序通過面向消息的中間件(MOM)創建和交換消息的標準途徑。
就像在這個系列前面的文章中一樣,我將使用一個簡單的示例來演示Spring JMS的特性。您將隨我一道開發一個點對點的(P2P)基于消息的系統,使用Spring JMS框架通過JMS接口與IBM的WebSphere MQ集成。完成練習后,將可以通過這個系統發送和接收簡單的文本消息。
在開始之前,請下載文章的源代碼。請參閱參考資料訪問Spring框架和IBM WebSphere MQ 5.3。還需要Apache Ant來運行示例應用程序。
Spring JMS
Spring JMS抽象框架簡化了JMS API的使用,并與JMS提供者(比如 IBM 的 WebSphere MQ 5.3)平滑地集成。org.springframework.jms.core 包提供了在Spring中使用JMS的核心功能。它的模板類處理資源的創建和釋放,簡化了JMS的使用。
像其他大多數Spring模板類一樣,JMS模板類提供了執行公共操作的helper方法。在需要更復雜應用的情況下,類把處理任務的核心委托給用戶實現的回調接口。JMS 類提供了方便的方法,用來發送消息、同步地使用消息以及向用戶公開JMS會話和消息的制作者。
以下JMS包和org.springframework.jms.core一起構成了Spring JMS的功能:
org.springframework.jms.support
提供轉換 JMSException 的功能。轉換代碼把檢測到的JMSException層次結構轉換成未檢測到異常的鏡像層次結構。
org.springframework.jms.support.converter。
提供 MessageConverter 抽象,以在Java對象和JMS消息之間進行轉換。
org.springframework.jms.support.destination
提供管理 JMS 目標的不同策略,比如針對JNDI中保存的目標的服務定位器。
org.springframework.jms.connection
提供適合在獨立應用程序中使用的ConnectionFactory實現。connection還包含針對JMS的Spring PlatformTransactionManager實現。它允許把JMS作為事務性資源集成到Spring的事務管理機制中。
IBM WebSphere MQ
就像前面提到的,示例應用程序會用Spring的JMS框架通過JMS接口與IBM的WebSphere MQ集成。通過在應用程序和Web服務之間傳遞消息,WebSphere MQ提供了可靠的、有恢復能力的應用程序集成。它使用隊列和事務性工具幫助保持消息跨網絡的完整性。WebSphere MQ降低了信息丟失的風險和調和通信IT系統的需要。
WebSphere MQ在它所支持的所有平臺上提供了一致的應用程序編程接口,這有助于讓集成的程序可移植。除了標準接口外,WebSphere MQ 還完整實現了JMS接口,包括對發布-訂閱消息傳遞的支持。WebSphere MQ EXPlorer工具可以遠程地管理和配置整個MQ網絡。管理和配置工具基于開放源碼的Eclipse框架,而且是可擴展的。
Spring JMS模板
Spring框架提供了JmsTemplate的兩個實現。JmsTemplate類使用JMS 1.1 API子類JmsTemplate102則使用JMS API我的示例應用程序使用的是 JmsTemplate102。
JMS模板被用來發送和接收JMS消息。Spring采用回調機制對JMS信息傳遞進行協調。MessageCreator回調接口用JmsTemplate中的調用代碼提供的Session創建消息。為了支持JMS API更復雜的應用,回調SessionCallback向用戶提供了JMS會話而callback ProdUCerCallback則公開了Session和MessageProducer組合。
【編輯推薦】