2

A、B、C の 3 つのシステムで MQ7.0 をセットアップしました。送信キュー名は同じです。キュー マネージャの名前は、それぞれ QMA、QMB、QMC です。これで、システム C にキュー QC ができました。システム A にリモート キュー定義を次のように定義しました。

システム B にリモート キュー マネージャの定義を次のように定義しています。

AのリモートキューRQにメッセージを入れたときに期待したことは、3番目がQMCとしてエイリアス化されているため、システムBのtxキュー(AB)のチャネルを介して、「3番目のQC」という伝送ヘッダーでシステムBに移動する必要があるためです。このメッセージは tx BC に配置され、システム C のキュー QC に到達する必要があります。しかし、メッセージを配置した後、メッセージは失われます。リモート キュー マネージャ エイリアスに関する私の理解は間違っていますか。誰かがより良い例を挙げることができますか?

4

1 に答える 1

1

これを試して:

QMAについて

DEF QR(QMC) RQMNAME(' ')   RNAME(' ') XMITQ(QMB)
DEF QR(QC)  RQMNAME('QMC') RNAME(' ') XMITQ('QMB')
DEF QL(QMB) USAGE(XMITQ) TRIGTYPE(FIRST) TRIGGER
* Channel def goes here

QRemote は QMgr エイリアスです。QMC へのパスが QMB XMitQ を経由することを指定します。これが定義されると、QMC 宛てのものはすべて QMB XMitQ に解決されます。空白のRNAMEandRQMNAMEは、これを QMgr エイリアスにし、従来のリモート キュー定義ではありません。OPENこの時点で、コマンドに使用される QMgr とは別に、接続する QMgr を指定できる Q プログラムのようなツールを使用する場合は、 QRemote. QMC 宛てのすべてのメッセージが QMB に解決されるようになりました。

ただし、あまり洗練されていないものを使用したい場合は、amqsput本当に QRemote が必要です。はこれDEF QR(QCを実現します。QRemotes を使用する場合は、QMgr エイリアスは必要ありません。これは単に、「誰かがという名前のキューを開いた場合、QCそれに対処しQCQMCXMitQ にQMB配置します。

QMB上

DEF QL(QMC) USAGE(XMITQ) TRIGTYPE(FIRST) TRIGGER
* Channel def goes here

QMB では、メッセージが QMC 宛てに到着すると、それ以上の定義やガイダンスなしで自動的に XMitQ に解決されます。

QMC で

DEF QL(QC)

最後に、メッセージは QC に宛てられた QMC に到着するため、メッセージを受信するには QLocal が必要です。

名前解決は少し複雑ですが、一度理解すれば、WMQ アドレッシングをほぼ理解できます。Name Resolution Infocenterのトピックに腰を下ろして、あなたが目にしている動作に戻って調整することをお勧めします。

ちなみに、定義の不一致は、QRemote が XMitQ の代わりにチャネルの名前を使用したことのようです。ある時点で、「送信キューの名前は同じです。キュー マネージャーの名前はそれぞれ QMA、QMB、QMC です」と言います。したがって、B でQMCQMB.QMC チャネルを提供するという名前の XMitQ が見つかることを期待しています。ただし、後で QMgr エイリアスを定義するdefine qremote(third) rname('') rqmname(QMC) xmitq(B.C)必要がありますXMITQ(QMC)

于 2012-08-12T22:35:49.520 に答える