定義:訊息驅動是專門用來處理基於訊息請求的組件。
訊息模型:點對點訊息傳遞和發布/訂閱訊息傳遞
點對點訊息傳遞模型:一條資訊只能傳遞給一個隊列接收方
發布/訂閱訊息傳遞:一條訊息可以由多個接收者接收
詳細解析:首先它是無狀態的Session Bean,用戶端調用MDB時,無需等待,可以立即返回,MDB會非同步處理客戶的請求;MDB必須實現MessageListener介面,當容器守候檢測到一條隊列資訊時,將調用onMessage()方法。
適用範圍:當一個業務執行很長,然後又無需將結果即時反饋客戶時,適合使用MDB;如訂單成功後向客戶發送一條成功簡訊或者一封郵件。
Queue訊息:(PTP訊息傳遞模型)通過註解可以描述訊息驅動的屬性相關資訊:
@MessageDriven(activationConfig =
{
@ActivationConfigProperty(propertyName="destinationType",
propertyValue="javax.jms.Queue"),
@ActivationConfigProperty(propertyName="destination",
propertyValue="queue/fashanshop"),
})
詳解:@MessageDriven指明這是一個訊息驅動,@ActivationConfigProperty注釋配置資訊的各種屬性,destinationType指定訊息類型為Queue隊列,destination指定訊息的路徑;一旦隊列到達指定的路徑,則會觸發onMessage方法,訊息將作為參數傳入。
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Topic訊息:(Pub/sub訊息傳遞模型)通過註解可以描述訊息驅動的屬性相關資訊:
@MessageDriven(activationConfig =
{
@ActivationConfigProperty(propertyName="destinationType",
propertyValue="javax.jms.Topic"),
@ActivationConfigProperty(propertyName="destination",
propertyValue="top/student"),
})
詳解:@MessageDriven指明這是一個訊息驅動,@ActivationConfigProperty注釋配置資訊的各種屬性,destinationType指定訊息類型為Topic隊列,destination指定訊息的路徑;一旦隊列到達指定的路徑,則會觸發onMessage方法,訊息將作為參數傳入。
總結建立JMS的步驟:
- 尋找JMS提供者(找到工廠)
- 建立JMS串連(建立串連)
- 建立JMS Session(建立session對象)
- 尋找JMS目的地(藉助JNDI尋找JMS目的地)
- 建立JMS生產者或消費者(藉助session和destination對象,客戶能獲得訊息的生產者和消費者)
- 發送或接收訊息(構建訊息,藉助生產者發送,消費者接收)