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

前
 
次
 

A トピック・デプロイメント・シナリオ

次の項では、各種トピックMDB構成に対するMDBデプロイメント・アクションを説明します。アクションには、MDBフリー・プールが作成される場所およびその数、サブスクリプションが作成される場所およびその数、所定のメッセージング消費パターンを達成するためにサブスクライバが共に機能する仕組みなどが含まれます。

この項では、topicMessagesDistributionModeCompatibilityに設定されている場合、トピックが外部の(WebLogic以外の)トピックの場合、またはトピックがWebLogic Serverリリース10.3.4以前のWebLogic JMSトピックの場合に発生するレガシー動作の詳細は説明しません。

お薦めの設定を含むアプリケーションの適切なシナリオ(順列)を決定するためのヘルプは、第10章「JMSトピックを使用したMDBの構成とデプロイ」を参照してください。

構成の順列がデプロイメント・アクションを決定する仕組み

次の設定は、(WebLogic Server 10.3.4以降の) WebLogic JMSトピックから消費するWebLogic MDBが、MDBフリー・プールのインスタンス、サブスクリプションのネーミング、サブスクリプションの場所を作成する方法、およびメッセージがMDBプール・インスタンスに配信される方法を決定します。

表A-1は、可能な構成の順列および対応するデプロイメント・アクションを説明しています。最初の2列が構成の順列を説明し、最後の2列は結果のデプロイメントを説明します。列は次のとおりです。

表A-1 構成の順列およびその結果として起こるデプロイメント・アクション

MDB構成 デプロイメント・アクション
topicMessagesDistributionMode トピック・タイプの順列 各サーバーのサブスクライブ先 サーバーごとにMDBプール

One-Copy-Per-Server

ローカル・メンバーの1つ

1つ

One-Copy-Per-Server

  • RDT Remote (非恒久のみ)脚注2

リモート・メンバーの1つ

1つ

One-Copy-Per-Server

  • PDT Local EveryMember脚注3

  • PDT Remote脚注2

  • RDT Local EveryMember

  • RDT Remote (恒久サブスクリプションのみ)脚注2

  • 単一のWebLogic JMS (M=1)

すべてのメンバー

M

One-Copy-Per-Application

  • PDT Local LocalOnly

  • RDT Local LocalOnly

すべてのローカル・メンバー

ローカル・メンバーごとに1つ

One-Copy-Per-Application

  • PDT Local EveryMember

  • PDT Remote脚注2

  • RDT Local EveryMember

  • RDT Remote脚注2

  • 単一のWebLogic JMS (M=1)

すべてのメンバー

M


脚注1One-Copy-Per-Server、RDT、Local、LocalOnly」の順列は、一部の構成トポロジにおける恒久サブスクリプションではサポートされていません(詳細は、シナリオ1: レプリケートされたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費を参照してください)。

脚注2 リモート分散トピックの場合、「One-Copy-Per-Server, Replicated Distributed Topic, Remote」の順列の非恒久サブスクリプションは除き、WebLogic Serverは常にすべてのトピック・メンバーに対してサブスクリプションを作成します。この場合、任意のリモート・メンバーに対して1つのサブスクリプションのみが作成されます。(シナリオ3: レプリケートされたDT、サーバーごとに1つのコピー、リモート・デプロイメントを参照してください)

脚注3 LocalOnly設定は、「One-Copy-Per-Server, Partitioned Distributed Topic, Local」の順列で常にEveryMemberと自動的に置換されます。(シナリオ7: パーティション化されたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費を参照してください)

一般的なシナリオ

次の項では、MDBアプリケーションの予想されるデプロイメント・シナリオを示します。

シナリオ内の図で使用されるメージおよびラベルは、表A-2で説明されます。

表A-2 シナリオ内で使用されるメージおよびテキストの説明

イメージまたはテキスト 説明

メッセージ


分散トピックにパブリッシュされるメッセージ。

両方向矢印


メッセージは重複し、コピーが他のトピック・メンバーに転送されます。つまり、トピックはレプリケートされた分散トピックということになります。

DTメンバーn

分散トピックのメンバー。

MDBプール

MDBフリーBeanプール。

一方向矢印


サブスクリプション。矢印の一端にあるMDBは、矢印のもう一端にあるトピックからのメッセージをリスニングして消費します。

S1、S2、S3の3つのパートを持つボックス


共有サブスクリプション。

S1、S2、S3の3つのパートを持つボックス


非共有サブスクリプション。S1は管理対象サーバー1のサブスクリプション、S2は管理対象サーバー2のサブスクリプションなどとなります。


スタンドアロン(非分散)トピック・シナリオ

スタンドアロン・トピック・シナリオは次のとおりです。

One-Copy-Per-Server

MDBアプリケーションをホストする各WebLogic Serverインスタンスでは、MDBプールは、トピックが同一のクラスタ内または異なるクラスタ内のどちらで実行されているかに関係なく、トピックに対して作成されます。N個のノードのMDBクラスタでは、N個のMDBプールが作成されます。各MDBプールはトピック上に個別のサブスクリプションを作成し、異なるMDBプールからのサブスクライバは同一のサブスクリプションを共有しません。

One-Copy-Per-Application

MDBアプリケーションをホストする各WebLogic Serverインスタンスでは、MDBプールは、トピックが同一のクラスタ内または異なるクラスタ内のどちらで実行されているかに関係なく、トピックに対して作成されます。N個のノードのMDBクラスタでは、N個のMDBプールが作成されます。同一のMDBアプリケーションのMDBプールによって作成されるすべてのサブスクライバは、同一のサブスクリプションを共有します。

レプリケートされた分散トピック・シナリオ

レプリケートされた分散トピックでは、すべての物理的なトピック・メンバーは各送信済メッセージを受信します。メッセージが物理的なトピック・メンバーのいずれかに着信すると、メッセージのコピーが内部で自動的に他のトピック・メンバーに転送されます。

次は、レプリケートされた分散トピックの予想されるデプロイメント・シナリオです。

シナリオ1: レプリケートされたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費

図A-1は次の構成を示します。

  • レプリケートされた分散トピック

  • topicMessagesDistributionMode = One-Copy-Per-Server

  • MDBおよびトピックは、同一の(ローカル)クラスタにデプロイされます。

  • distributedDestinationConnection = LocalOnly

図A-1 シナリオ1: レプリケートされたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費

図A-1の説明が続きます
「図A-1 シナリオ1: レプリケートされたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費」の説明

このシナリオでは、

  • メッセージのコピーは、RDTによってクラスタ内の他のサーバーに転送されます。

  • 1つのMDBプールは、ローカル・クラスタ内の各サーバー上に作成されます。

  • 各MDBプールは、同一サーバー上の分散トピック・メンバーのいずれか1つをリスニングします。

この方法では、すべてのメッセージングがローカルとなり(ネットワーク・コール全体に渡るメッセージの転送が回避)、すべての分散トピック・メンバーがMDBコンシューマによってサービスを提供されることが保証されるため、「RDT, One Copy Per Server, Local Deployment, EveryMember」よりも高いパフォーマンスが発揮されます。ただし、一部の使用状況では、「不均一なメッセージ・ロードおよび/またはメッセージ処理の遅延の処理方法」で説明されるトレードオフに基づき、EveryMemberを選択した方がパフォーマンスが上がる場合があります。

このシナリオは、同一サーバー上に複数のメンバーが存在する場合、MDBアプリケーションをホストするローカル・サーバーのいずれかにメンバーが存在しない場合、またはJMSサービス移行(自動/手動)が関連する場合、恒久サブスクリプションでは適切に機能しません。

シナリオ2: レプリケートされたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費

図A-2は次の構成を示します。

  • レプリケートされた分散トピック

  • topicMessagesDistributionMode = One-Copy-Per-Server

  • MDBおよびトピックは、同一の(ローカル)クラスタにデプロイされます。

  • distributedDestinationConnection = EveryMember

図A-2 シナリオ2: レプリケートされたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費

図A-2の説明が続きます
「図A-2 シナリオ2: レプリケートされたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費」の説明

このシナリオでは、

  • メッセージのコピーはRDTによってクラスタ内の他のサーバーに転送されますが、MDBサブスクリプションによってフィルタ・アウト(無視)されます。

  • MDBプールは、ローカル・クラスタ内の各サーバー上にある分散トピック・メンバーに対して作成されます。

  • 各MDBプールは、クラスタ内の分散トピック・メンバーのいずれか1つをリスニングします。

  • MDBアプリケーションをホストする各WebLogic Serverインスタンスは、分散トピックのすべてのメンバーをリスニングします。

  • DTの同一メンバー上にある各サーバーのサブスクライバは、それぞれ独自のサブスクリプションを所有します。つまり、異なるサーバーから同一メンバーへのサブスクライバは、サブスクリプションを共有しません。

この構成では柔軟性が高くなるので、RDTが必要なアプリケーションには最適です。ただし、必ずしも正確にサーバーごとに1つのメンバーとなることは保証できません。移行などが原因で構成が変わることがあります。

この構成は、特に、移行が関連せず、各管理対象サーバー上に分散トピック・メンバーが1つのみ存在する静的環境では、「シナリオ1: レプリケートされたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費」と比較すると最高のパフォーマンスを発揮しません。移行が関連せず、各管理対象サーバー上に分散トピック・メンバーが1つのみ存在するアプリケーションでは、シナリオ1を使用できます。

シナリオ3: レプリケートされたDT、サーバーごとに1つのコピー、リモート・デプロイメント

図A-3は次の構成を示します。

  • レプリケートされた分散トピック

  • 恒久サブスクリプション

  • topicMessagesDistributionMode = One-Copy-Per-Server

  • MDBおよびトピックは、異なる(リモート)クラスタにデプロイされます。

  • リモート・デプロイメントでは、distributedDestinationConnectionは無視されます。

図A-3 シナリオ3: レプリケートされたDT、サーバーごとに1つのコピー、リモート・デプロイメント

図A-3の説明が続きます
「図A-3 シナリオ3: レプリケートされたDT、サーバーごとに1つのコピー、リモート・デプロイメント」の説明

このシナリオでは、

  • メッセージのコピーはRDTによってクラスタ内の他のサーバーに転送されますが、MDBサブスクリプションによってフィルタ・アウト(無視)されます。

  • 各分散トピック・メンバーのMDBプールは、リモート・クラスタ内の各サーバー上で作成されます。

  • MDBアプリケーションをホストする各WebLogic Serverインスタンスは、分散トピックのすべてのメンバーをリスニングします(各リモート・メンバーに対して1つのローカル・プール)。

  • DTの同一メンバー上にある各サーバーのサブスクライバは、それぞれ独自のサブスクリプションを所有します。つまり、異なるサーバーから同一メンバーへのサブスクライバは、サブスクリプションを共有しません。

注意すべきは、恒久サブスクリプションの場合の動作であるということです。非恒久サブスクリプションの場合、各WebLogic Serverインスタンスは、最適化としてメンバーのいずれか1つ(任意のメンバー)に接続する単一のMDBプールを作成します。

シナリオ4: レプリケートされたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費

図A-4は次の構成を示します。

  • レプリケートされた分散トピック

  • topicMessagesDistributionMode = One-Copy-Per-Application

  • MDBおよびトピックは、同一の(ローカル)クラスタにデプロイされます。

  • distributedDestinationConnection = LocalOnly

図A-4 シナリオ4: レプリケートされたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費

図A-4の説明が続きます
「図A-4 シナリオ4: レプリケートされたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費」の説明

このシナリオでは、

  • メッセージのコピーはRDTによってクラスタ内の他のサーバーに転送されますが、MDBサブスクリプションによってフィルタ・アウト(無視)されます。

  • 1つのMDBプールが各ローカル・メンバーのローカル・クラスタ内の各サーバー上で作成されます(図A-5は、各WebLogic Serverインスタンスが1つのメンバーをホストする構成を示します。同一のローカルWebLogic Serverインスタンス上に複数のメンバーが存在する場合、複数のMDBプールがサーバー上で作成されます)。

  • メッセージは1つのMDBプールにのみ送信されます。

  • 同一メンバー上のすべてのサブスクライバは、同一のサブスクリプションを共有します。

シナリオ5: レプリケートされたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費

図A-5は次の構成を示します。

  • レプリケートされた分散トピック

  • topicMessagesDistributionMode = One-Copy-Per-Application

  • MDBおよびトピックは、同一の(ローカル)クラスタにデプロイされます。

  • distributedDestinationConnection = EveryMember

図A-5 シナリオ5: レプリケートされたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費

図A-5の説明が続きます
「図A-5 シナリオ5: レプリケートされたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費」の説明

このシナリオでは、

  • メッセージのコピーはRDTによってクラスタ内の他のサーバーに転送されますが、MDBサブスクリプションによってフィルタ・アウト(無視)されます。

  • 1つのMDBプールは、各メンバーのローカル・クラスタ内の各サーバー上で作成されます。

  • メッセージは1つのMDBプールにのみ送信されます。

  • 同一メンバー上のすべてのサブスクライバは、同一のサブスクリプションを共有します。

シナリオ6: レプリケートされたDT、アプリケーションごとに1つのコピー、リモート・デプロイメント

図A-6は次の構成を示します。

  • レプリケートされた分散トピック

  • topicMessagesDistributionMode = One-Copy-Per-Application

  • MDBおよびトピックは、異なる(リモート)クラスタにデプロイされます。

  • リモート・デプロイメントでは、distributedDestinationConnectionは無視されます。

図A-6 シナリオ6: レプリケートされたDT、アプリケーションごとに1つのコピー、リモート・デプロイメント

図A-6の説明が続きます
「図A-6 シナリオ6: レプリケートされたDT、アプリケーションごとに1つのコピー、リモート・デプロイメント」の説明

このシナリオでは、

  • メッセージのコピーはRDTによってクラスタ内の他のサーバーに転送されますが、MDBサブスクリプションによってフィルタ・アウト(無視)されます。

  • 1つのMDBプールは、リモート・クラスタ内の各メンバーのローカル・クラスタ内にある各サーバー上で作成されます。

  • メッセージは1つのMDBプールにのみ送信されます。

  • 同一メンバー上のすべてのサブスクライバは、同一のサブスクリプションを共有します。

パーティション化された分散トピック・シナリオ

パーティション化されたトピックを使用すると、

  • メッセージ受信側の分散トピック・メンバーは、メッセージを認識する唯一のメンバーです。メッセージは他のメンバーに転送されず、他のメンバー上のサブスクライバはメッセージのコピーを取得しません。

  • 受信メッセージは、JMSのAffinityおよびLoad Balance属性を使用して、分散トピック・メンバー間でロード・バランシングされます。『Oracle WebLogic Server JMSの構成と管理』のパーティション化された分散トピックのロード・バランシングに関する項を参照してください。

次は、パーティション化された分散トピックの予想されるデプロイメント・シナリオです。

シナリオ7: パーティション化されたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費

このシナリオでは、distributedDestinationConnectionの設定は無視され、警告メッセージのログが記録されます。かわりに、設定は強制的にEveryMemberとなります。動作は「EveryMember」の場合と同じになります(「シナリオ8: パーティション化されたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費」を参照してください)。

シナリオ8: パーティション化されたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費

図A-7は次の構成を示します。

  • パーティション化された分散トピック

  • topicMessagesDistributionMode = One-Copy-Per-Server

  • MDBおよびトピックは、同一の(ローカル)クラスタにデプロイされます。

  • distributedDestinationConnection = EveryMember

図A-7 シナリオ8: パーティション化されたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費

図A-7の説明が続きます
「図A-7 シナリオ8: パーティション化されたDT、サーバーごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費」の説明

このシナリオでは、

  • メッセージは分散トピック・メンバーに個別に配信されます。メッセージは重複したり、クラスタ内の他のメンバーにコピーされたりすることはありません。

  • MDBプールは、ローカル・クラスタ内の各サーバー上にある分散トピック・メンバーに対して作成されます。

  • DTの同一メンバー上にある各サーバーのサブスクライバは、それぞれ独自のサブスクリプションを所有します。つまり、特定のサーバーから同一メンバーへのサブスクライバは、別のサーバーのサブスクライバとサブスクリプションを共有しません。

シナリオ9: パーティション化されたDT、サーバーごとに1つのコピー、リモート・デプロイメント

このシナリオの詳細は、MDBデプロイメントおよびPDTが異なるクラスタ内にある点を除いて前のシナリオと同一です。

シナリオ9: パーティション化されたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費

図A-8は次の構成を示します。

  • パーティション化された分散トピック

  • topicMessagesDistributionMode = One-Copy-Per-Application

  • MDBおよびトピックは、同一の(ローカル)クラスタにデプロイされます。

  • distributedDestinationConnection = LocalOnly

図A-8 シナリオ9: パーティション化されたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費

図A-8の説明が続きます
「図A-8 シナリオ9: パーティション化されたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費」の説明

このシナリオでは、

  • メッセージは分散トピック・メンバーに個別に配信されます。メッセージは重複したり、クラスタ内の他のメンバーにコピーされたりすることはありません。

  • 1つのMDBプールが各ローカル・メンバーのローカル・クラスタ内の各サーバー上で作成されます(図A-9は、各WebLogic Serverが1つのメンバーをホストする構成を示します。同一のローカルWebLogic Serverインスタンス上に複数のメンバーが存在する場合、複数のMDBプールが各WebLogic Serverインスタンス上で作成されます)。

このシナリオは、高パフォーマンスのOne-Copy-Per-ApplicationおよびLocal PTの構成にお薦めできます。ただし、一部の使用状況では、「不均一なメッセージ・ロードおよび/またはメッセージ処理の遅延の処理方法」で説明されるトレードオフに基づき、EveryMemberを選択した方がパフォーマンスが上がる場合があります。

シナリオ11: パーティション化されたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費

図A-10は次の構成を示します。

  • パーティション化された分散トピック

  • topicMessagesDistributionMode = One-Copy-Per-Application

  • MDBおよびトピックは、同一の(ローカル)クラスタにデプロイされます。

  • distributedDestinationConnection = EveryMember

図A-9 シナリオ11: パーティション化されたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費

図A-9の説明が続きます
「図A-9 シナリオ11: パーティション化されたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、すべてのメンバーが消費」の説明

パーティション化された分散トピック、アプリケーションごとに1つのコピー、ローカル・デプロイメントの組合せでは、「シナリオ9: パーティション化されたDT、アプリケーションごとに1つのコピー、ローカル・デプロイメント、ローカルのみの消費」で示されるように、大半のユース・ケースでLocalOnly消費を使用する方が無難です。ただし、「不均一なメッセージ・ロードおよび/またはメッセージ処理の遅延の処理方法」で説明されるトレードオフがこの場合は適用されます。

シナリオ12: パーティション化されたDT、アプリケーションごとに1つのコピー、リモート・デプロイメント

図A-10は次の構成を示します。

  • パーティション化された分散トピック

  • topicMessagesDistributionMode = One-Copy-Per-Application

  • MDBおよびトピックは、異なる(リモート)クラスタにデプロイされます。

  • リモート・デプロイメントでは、distributedDestinationConnectionは無視されます。

図A-10 シナリオ12: パーティション化されたDT、アプリケーションごとに1つのコピー、リモート・デプロイメント

図A-10の説明が続きます
「図A-10 シナリオ12: パーティション化されたDT、アプリケーションごとに1つのコピー、リモート・デプロイメント」の説明

このシナリオでは、

  • メッセージは分散トピック・メンバーに個別に配信されます。メッセージは重複したり、クラスタ内の他のメンバーにコピーされたりすることはありません。

  • サブスクリプションはすべての分散トピック・メンバー上で動的に自動作成されます。

  • メッセージは1つのMDBプールにのみ送信されます。

  • 同一メンバー上にある同一MDBアプリケーションのすべてのサブスクライバは、同一のサブスクリプションを共有します。