ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic ServerメッセージドリブンBeanのプログラミング
11g リリース1(10.3.3)
B61425-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

3 MDBとメッセージング・モデル

WebLogic Server MDBは、ポイント・ツー・ポイント(キュー)またはパブリッシュ/サブスクライブ(トピック)メッセージング・モデルのいずれかで使用できます。それらのモデルの詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JMSのプログラミング』の「WebLogic JMSについて」を参照してください。

以降の節では、ポイントツーポイント・メッセージング・アプリケーションとパブリッシュ/サブスクライブ・メッセージング・アプリケーションの主な違いを説明します。

ポイントツーポイント(キュー)モデル: リスナーごとに1つのメッセージ

ポイントツーポイント・モデルでは、JMSキューからのメッセージが1つのMDBリスナーによって取り出され、処理されるまでキューに留まります。そのMDBがダウンした場合、メッセージはMDBが再びアクティブになるのをキューの中で待ちます。

: ある売り場では、1日を通して売れた品目を反映してバックエンドの在庫システムを更新する必要があります。在庫の値を減らす各メッセージは、必ず一度だけ処理されなければなりません。メッセージはそれが生成された直後に処理されたり、特定の順序で処理されたりする必要はありませんが、各メッセージが必ず処理されることが重要です。

図3-1は、ポイント・ツーポイント・アプリケーションを示しています。各メッセージは、MDB_Aの1つのインスタンスによって処理されます。メッセージ「M1」はMDB_A(1)で処理され、「M2」はMDB_A(2)で処理され、「M3」はMDB_A(3)で処理されます。

図3-1 ポイントツーポイント・モデル

図3-1の説明が続きます
「図3-1 ポイント・ツー・ポイント・モデル」の説明

パブリッシュ/サブスクライブ(トピック)モデル

パブリッシュ/サブスクライブ・モデルでは、JMSトピックがすべてのメッセージをすべてのサブスクライブ・リスナーにパブリッシュします。MDBリスナーがダウンした場合、トピックが「恒久サブスクリプション」トピックでない限りそのMDBはメッセージを逃がします。

恒久サブスクリプションの詳細と構成手順については、『Oracle Fusion Middleware Oracle WebLogic Server JMSのプログラミング』の「恒久サブスクリプションの設定」、および「恒久トピック・サブスクリプションの構成」を参照してください。

: 金融ニュース・サービスは、株価と金融情報をサブスクライバ(ニュース配信サービスなど)にブロードキャストします。各メッセージは、各サブスクライバに配信されます。

図3-2は、パブリッシュ/サブスクライブ・アプリケーションを示しています。ポイント・ツー・ポイント・アプリケーションとは違って、パブリッシュ/サブスクライブ・モデルでは、サブスクライブしているMDBそれぞれの1つのインスタンスによって処理されます。メッセージ「M1」は、MDB_AのインスタンスとMDB_Bのインスタンスで処理されます。同様に、「M2」もサブスクライブMDBそれぞれのインスタンスで処理されます。

図3-2 パブリッシュ/サブスクライブ・モデル

図3-2の説明が続きます
「図3-2 パブリッシュ/サブスクライブ・モデル」の説明

「必ず1回」の処理

MDBプールは、各メッセージを少なくとも1回処理します。メッセージは、複数回処理される場合もあります。

メッセージが必ず1回処理されるようにするには、コンテナ管理によるトランザクションを使用します。そうすれば、障害が発生したときにトランザクションMDBの処理がロールバックされ、メッセージが強制的に再配信されます。