FTE エージェントは、標準の QMgr ルーティングとエイリアシングを使用できます。これを行う教科書的な方法は、送信先の QMgr にちなんで送信キューに名前を付け、エイリアスを追加することです。たとえば、QMGRA では次のように定義します。
* On QMGRA
DEFINE QL(QMGRB) USAGE(XMITQ)
DEFINE QR(QMGRC) XMITQ(QMGRB) RQMNAME('') RNAME('')
これで、QMGRC に宛てられたメッセージはすべて、通常の名前解決を通過します。QMgr は、QRemote により、QMGRB を介して QMGRC へのルートを見つけます。このため、RNAME が空白の QRemote 定義は QMgr エイリアスと呼ばれます。
次に、QMGRB には、QMGRC につながる送信キューがあり、偶然にも QMGRC という名前が付けられます。メッセージを戻すには逆のことが適用されます。B を指す C に QMgr エイリアスが必要です。
XMit キューがリモート QMgr の名前を使用しない場合は、追加の QMgr エイリアスが必要になります。たとえば、多くの人が文字列 XMITQ を XMit キュー名に追加します (私の意見では、これは解決するよりも多くの問題を引き起こします)。そのようなシステムでは、次のものが必要になります。
* On QMGRA
DEFINE QL(QMGRB.XMITQ) USAGE(XMITQ)
DEFINE QR(QMGRC) XMITQ(QMGRB.XMITQ) RQMNAME('') RNAME('')
* On QMGRB
DEFINE QL(QMGRC.XMITQ) USAGE(XMITQ)
DEFINE QR(QMGRC) XMITQ(QMGRC.XMITQ) RQMNAME('') RNAME('')
この最初の部分は、以前と同じように機能します。WMQ は QMGRC を探し、QRemote を見つけて、指定された XMitQ にメッセージを書き込みます。しかし、メッセージが QMGRB に到着すると、名前がリモート QMgr と一致しないため、送信キューに直接解決できません。そのため、名前 QMGRC を QMGRC につながる XMitQ に解決する新しい QRemote を定義します。
QMGRA と QMGRB の間でクラスター解決を使用することもできます。その場合、RQMNAME を設定し、A の QMgr エイリアスで XMitQ を空白のままにしておくことでおそらく回避できます。または、両方を設定します。もう 1 つのオプションは、B で QMGRC という名前の QMgr エイリアスを作成し、それをクラスターにアドバタイズすることです。
専用チャネルを使用すると、ファイル転送トラフィックがクラスタ XMitQ およびクラスタ チャネルから切り離されるため、通常のトラフィックからサービス クラスを分離できます。ただし、ファイル転送トラフィックはすべて非永続的であり、一度に XMitQ に置かれるのはファイルごとのフレームだけなので、そのレベルの分離は必要ないかもしれません。(WMQ V7.5 では、オーバーラップ クラスターとスプリット クラスター XMitQ で同じことができます!)
これをテストするために FTE エージェントは必要ありません。SupportPac MA01の Q プログラムを使用し、接続時にローカル QMgr とリモート QMgr の両方の名前を指定するだけです。
メール スレッドからの更新:
では、クラスタ シナリオを使用してこれをモックアップするために使用した定義を次に示します。3 つの QMgr を定義し、QMGRA をリポジトリとして、QMGRB をメンバーとして、SDR/RCVR チャネルを使用して QMGRB と C 間のゲートウェイとしてクラスターを作成しました。C 宛ての A から B に到着するすべてのメッセージは、XMitQ に解決されます。A は、QMGRC.XMITQ を指している QMGRC という名前の QMgr エイリアスにより、C について知っています。(QMGRC と呼ばれる XMitQ をクラスターにアドバタイズしようとしましたが、クラスターはそれをローカル キューとして認識し、QMgr の名前解決を実行しないようです。それを QMGRC.XMITQ として定義し、その上に QMGRC QMgr エイリアスを作成すると、QMGRC が解決できるようになります。ローカルおよびクラスターから)。
これらを実行した後、RNAME を指定する QREMOTE 定義の恩恵を受けずに、Q プログラムを使用して接続し、C から A および A から C にメッセージを TEST.NAME.RESOLUTION という名前のキューに次のように送信することができました。
C:\Users\T.Rob>q -m QMGRA -oQMGRC/TEST.NAME.RESOLUTION
MQSeries Q Program by Paul Clarke [ V6.0.0 Build:May 1 2012 ]
Connecting ...connected to 'QMGRA'.
>Testing A to C
>^C
C:\Users\T.Rob>q -m QMGRC -oQMGRA/TEST.NAME.RESOLUTION
MQSeries Q Program by Paul Clarke [ V6.0.0 Build:May 1 2012 ]
Connecting ...connected to 'QMGRC'.
>Testing C to A
>^C
はい、クラスタ名は 'EDELMANN' です。この使用法では、Jerry Seinfeld が "Newman" と発音していたのと同じように発音されます。;-)
* On QMGRA:
ALTER QMGR +
REPOS(EDELMANN)
DEFINE QLOCAL('TEST.NAME.RESOLUTION') +
DEFPSIST(YES) +
REPLACE
DEFINE CHANNEL('EDELMANN.QMGRA') +
CHLTYPE(CLUSRCVR) +
CLUSTER('EDELMANN') +
CONNAME('localhost(3414)') +
TRPTYPE(TCP) +
REPLACE
* On QMGRB:
DEFINE QREMOTE('QMGRC') +
CLUSTER('EDELMANN') +
RQMNAME('QMGRC') +
XMITQ('QMGRC.XMITQ') +
REPLACE
DEFINE QLOCAL('QMGRC.XMITQ') +
INITQ('SYSTEM.CHANNEL.INITQ') +
TRIGGER +
TRIGDATA('QMGRB.QMGRC') +
USAGE(XMITQ) +
REPLACE
DEFINE CHANNEL('EDELMANN.QMGRA') +
CHLTYPE(CLUSSDR) +
CLUSTER('EDELMANN') +
CONNAME('localhost(3414)') +
TRPTYPE(TCP) +
REPLACE
DEFINE CHANNEL('EDELMANN.QMGRB') +
CHLTYPE(CLUSRCVR) +
CLUSTER('EDELMANN') +
CONNAME('localhost(3415)') +
TRPTYPE(TCP) +
REPLACE
DEFINE CHANNEL('QMGRB.QMGRC') +
CHLTYPE(SDR) +
CONNAME('localhost(3416)') +
TRPTYPE(TCP) +
XMITQ('QMGRC.XMITQ') +
REPLACE
DEFINE CHANNEL('QMGRC.QMGRB') +
CHLTYPE(RCVR) +
TRPTYPE(TCP) +
REPLACE
* On QMGRC:
DEFINE QREMOTE('QMGRA') +
RQMNAME('QMGRA') +
XMITQ('QMGRB') +
REPLACE
DEFINE QLOCAL('QMGRB') +
INITQ('SYSTEM.CHANNEL.INITQ') +
TRIGGER +
TRIGDATA('QMGRC.QMGRB') +
USAGE(XMITQ) +
REPLACE
DEFINE QLOCAL('TEST.NAME.RESOLUTION') +
REPLACE
DEFINE CHANNEL('QMGRB.QMGRC') +
CHLTYPE(RCVR) +
TRPTYPE(TCP) +
REPLACE
DEFINE CHANNEL('QMGRC.QMGRB') +
CHLTYPE(SDR) +
CONNAME('localhost(3415)') +
TRPTYPE(TCP) +
XMITQ('QMGRB') +
REPLACE