JMS相關特性

一,中間件   

   在面向消息的中間件(MessageOriented Middleware,MOM)被大量使用之前,已經有CORBA、DCOM、RMI等RPC中間件技術,但它們之間存在一些侷限性:(1)同步通信:客戶發出調用後,必須等待服務對象完成處理並返回結果後才能繼續執行;(2)客戶和服務對象的生命週期緊密耦合:客戶進程和服務對象進程都必須正常運行;如果由於服務對象崩潰或者網絡故障導致客戶的請求不可達,客戶會接收到異常;(3)點對點通信:客戶的一次調用只發送給某個單獨的目標對象。

      而MOM中發送者將消息發送給消息服務器,消息服務器將消息存放在若干隊列中,在合適的時候再將消息轉發給接收者。這種模式下,發送和接收是異步的,發送者無需等待;二者的生命週期未必相同:發送消息的時候接收者不一定運行,接收消息的時候發送者也不一定運行;一對多通信:對於一個消息可以有多個接收者。

二,同步與異步

     消息的同步接收是指客戶端主動去接收消息,JMS 客戶端可以採用MessageConsumer 的receive方法去接收下一個消息;消息的異步接收是指當消息到達時,主動通知客戶端。JMS 客戶端可以通過註冊一個實 現MessageListener 接口的對象到MessageConsumer,這樣,每當消息到達時,JMS Provider 會調用MessageListener中的onMessage 方法。


三,兩種模型

 PTP模型
      PTP(Point-to-Point)模型是基於隊列的,發送方發消息到隊列,接收方從隊列接收消息,隊列的存在使得消息的異步傳輸成爲可能。和郵件系統中的郵箱一樣,隊列可以包含各種消息,JMS Provider 提供工具管理隊列的創建、刪除。JMS PTP 模型定義了客戶端如何向隊列發送消息,從隊列接收消息,瀏覽隊列中的消息。


 PUB/SUB模型
      JMS Pub/Sub 模型定義瞭如何向一個內容節點發布和訂閱消息,這些節點被稱作主題(topic)。
  主題可以被認爲是消息的傳輸中介,發佈者(publisher)發佈消息到主題,訂閱者(subscribe) 從主題訂閱消息。主題使得消息訂閱者和消息發佈者保持互相獨立,不需要接觸即可保證消息的傳送


開發JMS的步驟
   廣義上說,一個JMS 應用是幾個JMS 客戶端交換消息,開發JMS 客戶端應用由以下幾步構成:
用JNDI 得到ConnectionFactory 對象;
用JNDI 得到目標隊列或主題對象,即Destination 對象;
用ConnectionFactory 創建Connection對象;
用Connection 對象創建一個或多個JMSSession;
用Session 和Destination 創建MessageProducer 和MessageConsumer;
通知Connection 開始傳遞消息


附上一個關於rabbitMq的博文:http://blog.sina.com.cn/s/blog_7f85f8a7010171er.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章