Oracle® Fusion Middleware Oracle WebLogic ServerメッセージドリブンBeanのプログラミング 11g リリース1(10.3.3) B61425-01 |
|
前 |
次 |
この節では、MDBをデプロイするための様々な手法とMDBがリスニングするJMS宛先について説明します。
MDBは、リスニング対象のJMS宛先と同じサーバー・インスタンスか、別のサーバー・インスタンスにデプロイできます。それらの選択肢はそれぞれ、連結または非連結と呼ばれます。
MDBとそのリスニング対象の宛先を連結すると、メッセージ・トラフィックが常にローカルになり、ネットワークの往復がなくなります。連結は、WebLogic Server JMSを使用し、メッセージ処理の待機時間とネットワーク・トラフィックを最小限に抑えたい場合に最適です。
MQ SeriesなどのWebLogic Serverで動作できないサード・パーティJMSプロバイダを使用する場合は、MDBとJMS宛先を連結できません。
図4-1と図4-2は、関連付けられたJMS宛先をホストするサーバー・インスタンスにMDBアプリケーションがデプロイされるアーキテクチャを示しています。これらのアーキテクチャは、最初のものには分散宛先があり2番目のものにはないという点で異なります。分散宛先を使用するアプリケーションでは、MDBは分散宛先セットのメンバーをホストする各サーバー・インスタンスにデプロイされます。分散宛先の詳細は、「JMS分散宛先」を参照してください。図4-1に示されているように、メッセージ「M1」は分散宛先とMDB_Aがデプロイされている各サーバー・インスタンス上のMDB_Aのインスタンスに配信されます。
図4-3は、リスニング対象のJMS宛先とは別のサーバー・インスタンスでMDBが動作するアーキテクチャを示しています。
リスニング対象のJMS宛先とは別のサーバー・インスタンスでMDBを実行するのが適切なのは、以下の場合です。
アプリケーションでサード・パーティ製のJMSプロバイダ(MQ Seriesなど)が使用されます。
JMSのインフラストラクチャからアプリケーション・コード(MDB)を分離する必要があります。JMS宛先とMDBを別々のサーバー・インスタンスに配置することで、アプリケーションの問題(たとえばMDBが仮想マシンのメモリーをすべて消費するなど)でJMSインフラストラクチャの処理が妨げられるのが防止されます。
MDBアプリケーションが非常にCPUを消費します。別のマシンにあれば、アプリケーションはJMSインフラストラクチャの処理に影響を与えずにCPUパワーを100%使用することができます。
構成中の1つのマシンが、同じ構成の他のマシンよりも処理能力、ディスク領域やメモリーの点で優れています。
JMS宛先とMDBは、クラスタリングされていないサーバー、同じクラスタ内の複数のサーバー、または別々のクラスタのサーバーにもデプロイできます。
MDBアプリケーションがWebLogic Serverクラスタで動作している場合は、複数の物理的宛先(キューまたはトピック)を、メッセージ・プロデューサやコンシューマからは1つの宛先に見える分散宛先として構成できます。
分散宛先を構成すると、WebLogic JMSはその分散宛先のメンバー間でメッセージングの負荷を分散します。サーバーの障害が原因で宛先のメンバーがアクセス不能になると、メッセージ・トラフィックは分散宛先セットのアクセス可能な他の物理的宛先にリダイレクトされます。distributed-destination-connection
要素をweblogic-ejb-jar.xml
ファイルで使用すると、同じクラスタ内のWebLogic分散キューにアクセスするMDBが、リソースをすべての分散宛先メンバーから消費するか、現在のWebLogic Serverのローカル・メンバーのみから消費するかを制御できます。
MDBとその関連する分散宛先を同じクラスタにデプロイすると、WebLogic Serverは自動的に分散宛先メンバーを確認し、各メンバーで必ずMDBがリスニングしているようにします。
MDBは、クラスタリングされている各サーバー・インスタンスに均一にデプロイされます。メッセージは、複数のサーバー・インスタンス上の物理的宛先間で分散され、並行して処理されます。1つのサーバー・インスタンスがダウンした場合は、クラスタの他のノードがメッセージの処理を続行できます。このアーキテクチャは、以下の場合に適切な選択肢です。
アプリケーションで高い可用性が必要とされる
各サーバーで同じアプリケーションが実行されるようにアプリケーションを均一にデプロイしたい
アプリケーションが大量のメッセージを処理するか、大規模な並行処理を必要としている
クラスタ内のマシンがすべて同一であるか、同じレベルの処理能力、ディスク領域、およびメモリー量を有している
例については、図4-1を参照してください。分散宛先の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JMSのプログラミング』の「分散宛先の使用」を参照してください。