WebSphere Message Broker ブローカー・ドメインの基礎となる
WebSphere MQ ネットワークを設計する際には、クラスターを使用するかどうかを考慮してください。
キュー・マネージャー・クラスターを使用することには、以下の重要な利点があります。
- システム管理の削減
クラスターがネットワークを確立するために必要とする定義が、比較的少ないので、より迅速かつ容易にネットワークをセットアップおよび変更することができます。
- 可用性およびワークロード・バランシングの増大。
同じキューのインスタンスを複数のキュー・マネージャーに定義すれば、クラスターによってワークロードを分散させることができます。
WebSphere Message Broker でクラスターを使用する場合には、以下の点を考慮してください。
- SYSTEM.BROKER キューの場合:
- SYSTEM.BROKER キューが定義されるのは、WebSphere Message Broker コンポーネントを作成し、それらをクラスター・キューとして定義しない場合です。この属性は変更しないでください。
- ブローカー、構成マネージャー、および ユーザー・ネーム・サーバー接続の場合:
- ブローカー、構成マネージャー、およびユーザー・ネーム・サーバーをサポートするキュー・マネージャーをクラスターに定義する場合、WebSphere MQ クラスターの提供する単純化された管理から益を得ることができます。これは、集合的にブローカーに特に関係のあることに気付かれるかもしれません。
ブローカーはすべて、WebSphere MQ 相互接続を持っている必要があるからです。
- メッセージ・フロー入力キューの場合:
- 入力キューをクラスター・キューとして定義する場合、メッセージの順序あるいはセグメント化されたメッセージのセグメントの含意を考慮してください。
含意は WebSphere MQ クラスター・キューの場合と同じです。特に、アプリケーションがセグメント化されたメッセージを送信する場合には、すべてのセグメントが確実に同じ宛先キューによって処理され、したがって同じブローカーにあるメッセージ・フローの同じインスタンスによって処理されるようにしなければなりません。
- メッセージ・フロー出力キューの場合:
-
- WebSphere Message Broker は出力用のキューを開く場合は、必ず MQOO_BIND_AS_Q_DEF を指定します。セグメント化されたメッセージが出力キューに置かれていると予期する場合、または一連のメッセージを同じプロセスによって処理したい場合には、そのキューを定義する際、DEFBIND(OPEN) を指定する必要があります。
そのようにして、単一メッセージのすべてのセグメント、または 1 つのシーケンス内のすべてのメッセージが、同じ宛先キューに置かれ、受信側アプリケーションの同じインスタンスによって確実に処理されるようにします。
- 独自の出力ノードを作成する場合には、出力キューを開く際に MQOO_BIND_AS_Q_DEF を指定し、メッセージの順序を固定的に指定したり、セグメント化されたメッセージに単一の宛先を指定したりする必要がある場合には、キューを定義する際に DEFBIND(OPEN) を指定してください。
- パブリッシュ/サブスクライブ の場合:
-
- パブリケーションのターゲット・キューがクラスター・キューである場合には、パブリッシュ/サブスクライブ メッセージ・フローを、クラスター内のキュー・マネージャー上のすべてのブローカーにデプロイする必要があります。しかしながら、クラスターはブローカー・ドメイン・トポロジーおよび機能に対して、いかなるフェイルオーバー機能も提供しません。
メッセージのパブリッシュ先となるブローカー、またはサブスクライバー登録が選択できない場合には、パブリケーションまたは登録の配布が、別のブローカーによって引き継がれることはありません。
- クラスターのメンバーであるキュー・マネージャー上で稼働しているブローカーに、クライアントがサブスクリプションを登録する場合、ブローカーはプロキシー登録をブローカー・ドメイン内の隣接局に転送します。
登録の詳細はクラスターの他のメンバーには公示されません。
- サブスクライバー・キューが、指定された任意のパブリケーションを受け取るクラスター・キューの一部となるよう、クライアントをクラスター・サブスクライバーとすることができます。この場合、サブスクリプションの登録時に、クラスターに関連付けられている仮想のキュー・マネージャーの名前を使用してください。これは、パブリケーションの送信先のキュー・マネージャーではなく、使用するブローカーの別名です。管理アクティビティーとして、すべてのクラスター・サブスクライバーのこのサブスクリプションを満たすブローカー上で、このキュー・マネージャーの空のキュー・マネージャー別名が定義されます。このキュー・マネージャーを指定するサブスクライバー・キューにブローカーがパブリッシュを行うと、キュー・マネージャー名はサブスクライバー・クラスター・キューをホストする任意のキュー・マネージャーに送信されるパブリケーションに解決され、1 つのクラスター・サブスクライバーだけがパブリケーションを受け取ります。
例えば、クラスター・サブスクライバー・キューが SUBS_QUEUE で、「仮想の」サブスクライバー・キュー・マネージャーが CLUSTER_QM の場合、ブローカー定義は以下のようになります。
DEFINE QREMOTE(CLUSTER_QM)
RQMNAME(' ') RNAME(' ')
これにより、CLUSTER_QM 上の SUBS_QUEUE のブローカー・パブリケーションが、クラスター内の任意の場所にある SUBS_QUEUE という名前のクラスター・キューの 1 つのインスタンスに送信されます。
クラスターの詳細、およびクラスター・キューを使用することの影響については、「WebSphere MQ キュー・マネージャー・クラスター」を参照してください。