1、認識JMS,JMS模塊的功能只提供了接口,並無給予實現,實現JMS接口的消息中間件叫JMS Provider, 這樣的消息中間件能夠從Java裏經過JMS接口進行調用。有點像JDBC JMS的組成部分:header和body。header包含消息的識別信息和路由信息,body包含消息的實際數據。 JMS的通用接口集合以異步方式發送或接收消息。另外, JMS採用一種寬鬆結合方式整合企業系統的方法,其主要的目的就是建立可以使用跨平臺數據信息的、可移植的企業級應用程序,而把開發人力解放出來。 Java消息服務支持兩種消息模型:Point-to-Point消息(即P2P)和發佈訂閱消息(Publish Subscribe messaging,簡稱Pub/Sub,也就是廣播模式)。 根據數據格式,JMS消息可分爲如下五種: BytesMessage 消息是字節流。 MapMessage 消息是一系列的命名和值的對應組合。 ObjectMessage 消息是一個流化(即繼承Serializable)的Java對象。 StreamMessage 消息是Java中的輸入輸出流。 TextMessage 消息是一個字符串,這種類型將會普遍用於XML格式的數據。 2、使用JMS 在使用JMS時,其步驟很像使用JDBC同樣,須要的步驟爲: 一、創建消息鏈接(也就是創建鏈接工廠); 二、設定消息目的地(其實與步驟1中用的類是同樣的,只是它是用來指定目的地,而步驟1中是用來指定消息服務器地址的); 三、建立jmsTemplate實例(爲下一步構建消息sessin做準備); 四、建立消息生產者(其中就用到了二、3兩步的產物),它就是一個普通的類,通常是經過send方法發送消息,也能夠經過MessageListenerAdapter指定發送信息的方法; 五、建立MDP(也就是消息接收者,它是一個必須實現MessageListener接口的類); 六、爲每一個MDP創建一個監聽容器,當有相應的消息傳來,則它會自動調用對應的MDP消費消息。 整個過程就像編寫JDBC同樣,代碼維護量很大。爲此,讓Spring對其進行管理是個不錯的選擇。 3、Spring整合JMS Spring框架提供了一個模板機制來隱藏Java APIs的細節。開發人員可使用JDBCTemplate和JNDITemplate類來分別訪問後臺數據庫和JEE資源(數據源,鏈接池)。JMS也不例外,Spring提供JMSTemplate類,所以開發人員不用爲一個JMS實現去編寫樣本代碼。接下來是在開發JMS應用程序時Spring所具備一些的優點。 1. 提供JMS抽象API,簡化了訪問目標(隊列或主題)和向指定目標發佈消息時JMS的使用。 2. 開發人員不須要關心JMS不一樣版本(例如JMS 1.0.2與JMS 1.1)之間的差別。 3. 開發人員沒必要專門處理JMS異常,由於Spring爲全部JMS異常提供了一個未經檢查的異常,並在JMS代碼中從新拋出 具體的詳細步驟與方法參考 spring-reference2.5.pdf 中的第十九章。 下面,我就將我在整個學習過程當中實踐過的例子一一列舉出來,並將在其中遇到的問題和心得給出必定的說明,但願對你們能有所幫助。 ActiveMQ相關Api 1.鏈接工廠:鏈接工廠是客戶端用來建立鏈接的對象,列入activeMQ提供的ActiveMQConnectionFactory 2.鏈接:Connection封裝了客戶端與JMS提供者之間的一個虛擬鏈接 3.會化Session是消息生產者和消息消費者的一個單線程上下文,回話能夠建立消息生產者[producer]和消息消費者[consumer] 和消息[message]等,會話提供了一個事物上下文,一組發送和接收組合成了一個原子操做