準則: 指出訊息驅動 Bean
這個準則討論如何指出和塑造 J2EE 應用程式的訊息驅動 Bean。
關係
相關元素
主要說明

簡介

這個準則以指出訊息驅動 Bean 為重點。工作成果準則:訊息驅動 Bean 提供訊息驅動 Bean 的其他指引。工作成果準則:Enterprise JavaBeans 提供 EJB 的一般指引。

訊息驅動 Bean 的一些性質如下:

  • 是 Stateless。
  • 不傳回值或異常狀況給用戶端。
  • 沒有介面,因為用戶端無法直接存取訊息驅動 Bean,而是傳送訊息給 Bean 所服務的目的地(或端點)來間接地存取。有一個接聽器方法(在 JMS 訊息驅動 Bean 中是 "onMessage()"),通常可處理任何訊息。這表示執行時期必須以 "instanceOf()" 操作來執行類型檢查,以判斷接收的訊息類型。

訊息可以從任意處傳送至儲存區,包括從其他 EJB、Web 元件及應用程式用戶端。必要時,儲存區會呼叫訊息驅動 EJB 來處理送入的訊息事件。訊息驅動 EJB 可以存取其他階段作業或實體 EJB,或直接存取 EIS 層來處理訊息。

指出訊息驅動 Bean

訊息驅動 Bean 有方法可以非同步地處理訊息。Session Bean 和 Entity Bean 只能同步地呼叫。在定義整體系統的並行性時可找出訊息驅動 Bean。如需並行性的一般準則,例如分離呼叫端和被呼叫程式碼的設計型樣,請參閱準則:並行性。在作業:描述執行時期架構中,通常會以訊息驅動 Bean 做為在 EJB 儲存區內提供並行性的一種手段。因此,通常不是直接從分析類別中指出,而是用來解決特定的設計問題,例如效能和束縛問題。

導入訊息驅動 Bean 的理由包括:

  • 軟體各部分的分隔問題 - 可以傳送訊息至佇列,而不需束縛在這些訊息的消費者上。也可以支援多個傳送端和接收端。
  • 提高效能,允許訊息傳送端執行處理,不會在同步呼叫上阻塞(例如,在呼叫 Entity Bean 或 Session Bean 時)。
  • 提高可靠性,即使訊息消費者離線,訊息傳送端可以繼續運作。
  • 其他優點可能由訊息導向中介軟體 (MOM) 提供(在傳訊 介面背後)- 例如保證訊息送達。
  • 現有的設計元素(例如舊版系統)使用傳訊來溝通。

建模訊息驅動 Bean

如需建模 EJB 的一般指引,請參閱準則:指出 Enterprise JavaBeans (EJB)。不過,請注意訊息驅動 Bean 通常在「流程觀點」中塑造。如需在「流程觀點」中建模訊息驅動 Bean 的特定指引,請參閱準則:描述 J2EE 應用程式的執行時期架構

傳回結果給訊息傳送端

訊息驅動 Bean 無法直接傳送回應給訊息傳送端。

傳送回應的一般策略是引進另一個接收回應的目的地或端點。如需此策略的其他詳細資料,請參閱 [ROM02]。