JMS應用

     JMS(Java Message Service,Java消息服務)是一組Java應用程序接口(Java API),它提供創建、發送、接收、讀取消息的服務。

 

     JMS 使您能夠通過消息收發服務(有時稱爲消息中介程序或路由器)從一個 JMS 客戶機向另一個 JML 客戶機發送消息。消息是 JMS 中的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由信息以及有關該消息的元數據組成。消息主體則攜帶着應用程序的數據或有效負載。根據有效負載的類型來劃分,可以將消息分爲幾種類型,它們分別攜帶:簡單文本 (TextMessage)、可序列化的對象 (ObjectMessage)。

 

      當 JMS 客戶機發送消息時,它並不等待迴應。它執行發送操作,然後繼續執行下一條指令。消息可能最終轉發到一個或許多個客戶機,這些客戶機都不需要作出迴應。 


      JMS的通用接口集合以異步方式發送或接收消息。另外, JMS採用一種寬鬆結合方式整合企業系統的方法,其主要的目的就是創建能夠使用跨平臺數據信息的、可移植的企業級應用程序,而把開發人力解放出來。

      Java消息服務支持兩種消息模型:Point-to-Point消息(P2P)和發佈訂閱消息(Publish Subscribe messaging,簡稱Pub/Sub)。

 

      P2P消息模型是在點對點之間傳遞消息時使用。如果應用程序開發者希望每一條消息都能夠被處理,那麼應該使用P2P消息模型。與Pub/Sub消息模型不同,P2P消息總是能夠被傳送到指定的位置。

  Pub/Sub模型在一到多的消息廣播時使用。如果一定程度的消息傳遞的不可靠性可以被接受的話,那麼應用程序開發者也可以使用Pub/Sub消息模型。換句話說,它適用於所有的消息消費程序並不要求能夠收到所有的信息或者消息消費程序並不想接收到任何消息的情況。

      JMS通過允許創建持久訂閱來簡化時間相關性,即使消息預訂者未激活也可以接收到消息。此外,使用持久訂閱還可通過隊列提供靈活性和可靠性,而仍然允許消息被髮給許多的接收者。

      JMS應用程序接口提供用於創建每種類型消息和設置荷載的方法例如,爲了在一個隊列創建併發送一個TextMessage實例,你可以使用下列語句: TextMessage message = queueSession.createTextMessage(); message.setText(textMsg);   以異步方式接收消息,需要創建一個消息監聽器然後註冊一個或多個使用MessageConsumer的JMS MessageListener接口。會話(主題或隊列)負責產生某些消息,這些消息被傳送到使用onMessage方法的監聽者那裏。

 

      爲了啓動消息的交付,不論是Pub/Sub還是P2P,都需要調用start方法。

      當一條消息被捕捉時,這條消息做爲一條必須被強制轉化爲適當消息類型的普通Message對象到達。

      停止消息的傳遞,無論是Pub/Sub還是P2P,都調用stop方法。
     

      消息驅動組件(MDB)的異步消是一個當消息到達時被容器調用息消費程序。和entity和session EJB不同,MDB沒有本地和遠程接口並且是匿名的;它們對於客戶是不可見的。MDB是JMS系統的一部分,作爲消費者實現服務器上的商業邏輯程序。 一個客戶程序可能通過使用JNDI定位一個與MDB相關聯的JMS。

     

      JMS可以做什麼呢?

      例如,分別用於銷售、庫存、客戶服務和賬目處理的系統。這些部門之間的系統很可能已經存在了很長時間,這些處理要求把事務移動到系統中去,這並不是一個小的工作。這就是消息服務適用的地點。

  當售貨員完成銷售的時候,一條消息被髮給庫存系統;一旦訂單消息發送給收發貨人員,就可以按照訂單出貨了。當訂單成功地發貨,系統將通知顧客服務和會計系統這個訂單已經成功的交易了。所有對應的每個子系統都自動地根據收到的消息進行更新。

  JMS一般都不是用來整合一個系統,而是整合許多可能參與消息驅動環境的系統。JMS是一個用於開發和集成企業應用程序的重要的工具。因爲許多公司都有以前遺留下來的系統和新近開發的系統綜合起來的系統,消息的使用是整合整個企業的重要的步驟。

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