1. 程式人生 > >EJB---->JMS(Java Message Service)和訊息驅動bean

EJB---->JMS(Java Message Service)和訊息驅動bean

訊息驅動Bean(MDB)是設計用來專門處理基於訊息請求的元件。MDB 負責處理訊息,而EJB 容器則負責處理服務(事務、安全、資源、併發、訊息確認,等等),使bean 開發者把精力集中在處理訊息的業務邏輯上。如果你不使用MDB,則必須編寫一部分這些服務。MDB 像一個沒有local 和remote 介面的無狀態Session Bean,它和無狀態Session Bean 一樣也使用了例項池機制,容器可以為它建立大量的例項,用來併發處理成百上千個JMS 訊息。正因為MDB 具有處理大量併發訊息的能力,所以非常適合應用在一些訊息閘道器產品。一個MDB 通常要實現MessageListener 介面,該介面定義了onMessage()方法。Bean 通過它來處理收到的JMS 訊息。
package javax.jms;
public interface MessageListener {
public void onMessage(Message message);
}
當容器檢測到bean 守候的管道有訊息到達時,容器呼叫onMessage()方法,將訊息作為引數傳入MDB。MDB 在
onMessage()中決定如何處理該訊息。你可以使用註釋指定MDB 監聽哪一個目標地址(Destination)。當MDB 部署
時,容器將讀取其中的配置資訊。
如果一個業務執行的時間很長,而執行結果無需實時向用戶反饋時,也很適合使用MDB。如訂單成功後給使用者
傳送一封電子郵件或傳送一條簡訊等。