インフォセンターのJava用WebSphereMQクラスでのクライアント・チャネル定義表の使用を参照してください。使用しているバージョンであるとおっしゃっていたので、V7.0 Infocenterにリンクしましたが、それ以降のバージョンでも同じように機能します。
チャネル定義にマルチインスタンスQMgrと対応するマルチインスタンスCONNAME属性が含まれる前は、より一般的に知られているように、クライアントチャネル定義テーブルまたはCCDTがありました。CCDTには、1つ以上のQMgrへの任意の数のチャネルのCLNTCONN定義が含まれています。複数のエントリのQMNameフィールドに同じ値がある場合、それらはグループとして扱われます。(CCDTのQMNameは、実際のQMgr名と一致する必要はありません。そのため、一意でないQMgr名を使用する必要がありますが、これは適切な方法ではありません。これは、チャネルのグループを識別するためのCCDTへの単なるインデックスです。 )。
CCDTをよりよく理解するには、「WebSphere MQクライアント・アプリケーションをインフォセンターのキュー・マネージャーに接続する」のトピック、特に、チャネルの重み付けとアフィニティーの例、クライアント・チャネル定義テーブルの役割、およびMQCONN呼び出しの例をお読みください。(左側の目次からこれらにアクセスします。フレームの右上には、迷子になった場合に目次を表示しているページに移動するボタンがあります。)
CCDTの1つの「落とし穴」は、その中の各チャネル名が一意でなければならないということです。これは、異なるIPアドレスでまったく同じチャネルを検索するマルチインスタンスCONNAMEとは異なります。これは、CCDTファイルがQMgrでMQSCコマンドを使用して維持されるためです。キュー・マネージャーによって管理される名前空間内では、すべてのオブジェクト名が一意である必要があります。QMgrでチャネルを定義する場合、各チャネルには一意の名前を付ける必要があります。CCDTの場合、エントリはCLNTCONNチャネルを使用して定義されます。これらは他のQMgrで定義されたSVRCONNチャネルを指しますが、すべてのCLNTCONNチャネルは同じ名前空間で定義されているため、一意である必要があります。
これをさらに説明するために、PAYROLLと呼ばれるアプリのプロビジョニングを検討してください。QMgr名と組み合わせたアプリ名に基づいてチャネル名を作成できます。これにより、from->to関係を左から右に読み取るチャネルが作成されます。たとえば、3つのQMgrのCCDTを定義するには、次のようにします。
* On any QMgr
DEF CHL(PAYROLL.QMGR1) CHLTYPE(CLNTCONN) QMNAME(PAY) CONNAME("qm1host(1414)")
DEF CHL(PAYROLL.QMGR2) CHLTYPE(CLNTCONN) QMNAME(PAY) CONNAME("qm2host(2414)")
DEF CHL(PAYROLL.QMGR3) CHLTYPE(CLNTCONN) QMNAME(PAY) CONNAME("qm3host(3414)")
*On QMgr1
DEF CHL(PAYROLL.QMGR1) CHLTYPE(SVRCONN)
*On QMgr2
DEF CHL(PAYROLL.QMGR2) CHLTYPE(SVRCONN)
*On QMgr3
DEF CHL(PAYROLL.QMGR3) CHLTYPE(SVRCONN)
次に、アプリはQMgr名をとして指定し*PAY
、WMQクライアントコードは3つのエントリから選択します。エントリの重み付けと再試行順序には、追加のパラメータを使用できます。これは、ドキュメントに記載されています。
注:示されている例は、概念を説明する重要な要素にまで簡略化されています。本番実装のSVRCONNエントリには、MCAUSERおよび/またはチャネル出口、場合によってはSSLパラメータ、およびV7.1以降ではいくつかのCHLAUTHルールが含まれます。