1. 程式人生 > >帶你走進EJB--JMS

帶你走進EJB--JMS

在上篇文章中我們對EJB有了一個基本的瞭解,因為要繼續介紹EJB的相關分類,而在分類中有一個是訊息驅動Bean(MessageDriverBean),MDB是基於JMS(Java Message ServiceJava訊息服務),所以在這裡很有必要對JMS進行了解.

什麼是JMS?

JMS(Java Message Service)Java的訊息服務,JMS的客戶端之間可以通過JMS服務進行非同步的訊息傳輸。JMS支援兩種訊息模型:Point-to-PointP2P)和Publish/SubscribePub/Sub),即點對點和釋出訂閱模型。

       P2P模型(如下圖)

計算機生成了可選文字:回易OUeUe日任三回Acknowledges

P2P模型中,有下列概念:訊息佇列(Queue)、傳送者(Sender)、接收者(Receiver)。每個訊息都被髮送到一個特定的佇列,接收者從佇列中獲取訊息。佇列保留著訊息,直到它們被消費或超時。

P2P模型中需要注意一下三點.

  • 每個訊息只有一個消費者(Consumer)(即一旦被消費,訊息就不再在訊息佇列中)
  • 傳送者和接收者之間在時間上沒有依賴性,也就是說當傳送者傳送了訊息之後,不管接收者有沒有正在執行,它不會影響到訊息被髮送到佇列。
  • 接收者在成功接收訊息之後需向佇列應答成功,如果你希望傳送的每個訊息都應該被成功處理的話,那麼你需要P2P模型。

Pub/Sub模型(如下圖)

計算機生成了可選文字:同蕊」、p.。以~~~~刁PUblishes}您藍回OeliVe怡回。}一―屍OeliVe份日

Pub/Sub模型中,有下列概念: 主題(Topic)、釋出者(Publisher)、訂閱者(Subscriber)。客戶端將訊息傳送到主題。多個釋出者將訊息傳送到Topic,系統將這些訊息傳遞給多個訂閱者。

在此模型下需要注意的兩點

  • 每個訊息可以有多個消費者。
  • 釋出者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須建立一個訂閱之後,才能消費釋出者的訊息,而且,為了消費訊息,訂閱者必須保持執行的狀態。

訊息的消費

JMS中,訊息的產生和消費是非同步的。對於消費來說,JMS的消費者可以通過兩種方式來消費訊息。

  • 同步 –訂閱者或接收者呼叫receive方法來接收訊息,
    receive方法在能夠接收到訊息之前(或超時之前)將一直阻塞。
  • 非同步 –訂閱者或接收者可以註冊為一個訊息監聽器。當訊息到達之後,系統自動呼叫監聽器的onMessage方法。

    以上內容為JMS的基本模型,接下來我們將會研究一下JMS的程式設計模型來加深對JMS的理解.