2

オブジェクト記述子 (MQOD) の ResolvedQName フィールドを調べて、open_after および put1_before API 出口で解決されたキュー名 (つまり、エイリアス キューのベース キュー名) を取得しようとしています。しかし、これらの出口内にベース キュー名が含まれていないようです (つまり、空白であるか、'1.59.15' のような予期しない値です)。ただし、ObjectName がエイリアス キュー名で適切に設定されていることがわかります。わかりやすくするために、私のエイリアス キューとベース キューは両方とも同じローカル QM を使用しています。

そのため、エイリアス キューを使用して (open + put) または put1 呼び出しを行うときに、MQ API 出口内で解決されたキュー名を取得する方法があるかどうか疑問に思っています。どんな助けでも大歓迎です。

4

2 に答える 2

1

cmqc.h ファイルの MQOD 構造を読み取る必要があります。ResolvedQName フィールドは、アプリケーションが MQOD 構造体のバージョン 3 (またはそれ以降) を使用した場合にのみ使用できます。MQOD のバージョン番号を確認すると、バージョン 1 または 2 であることがわかります。

注: MQOD のデフォルトのバージョン番号は 1 です。したがって、ResolvedQName フィールドは使用できません。

最後に、MQGMO 構造体と MQPMO 構造体の両方に、構造体のバージョン 1 から始まる ResolvedQName フィールドがあります。

于 2012-12-14T19:16:26.537 に答える