3

Put MQ API Exit(前または後)には、ターゲットキュー(つまり、「put」呼び出しが呼び出されたキュー)の名前を取得する方法があります。

パラメータを照会しようとしましHobjたが、照会オプションでオブジェクトが開かれていないというエラーが発生しました(これは有効な可能性です)。

ResolvedQNameパラメータのフィールドもチェックpPutMsgOptsしましたが、空白でした。

ターゲットキュー名を取得する他の方法はありますか?どんなアイデアでも大歓迎です。

4

1 に答える 1

0

解決されたキュー・マネージャーおよび解決されたキューの名前は、PUT1またはOPENの呼び出し中にアクセス可能なオブジェクト記述子で返されます。MQXR_AFTER

サンプルプログラム`amqsaxe0.cを見ると、次の関数シグネチャが表示されます。

MQ_OPEN_EXIT OpenAfter;

void MQENTRY OpenAfter   ( PMQAXP    pExitParms
                         , PMQAXC    pExitContext
                         , PMQHCONN  pHconn
                         , PPMQOD    ppObjDesc
                         , PMQLONG   pOptions
                         , PPMQHOBJ  ppHobj
                         , PMQLONG   pCompCode
                         , PMQLONG   pReason
                         )


MQ_PUT1_EXIT Put1After;

void MQENTRY Put1After   ( PMQAXP    pExitParms
                         , PMQAXC    pExitContext
                         , PMQHCONN  pHconn
                         , PPMQOD    ppObjDesc
                         , PPMQMD    ppMsgDesc
                         , PPMQPMO   ppPut1MsgOpts
                         , PMQLONG   pBufferLength
                         , PPMQVOID  ppBuffer
                         , PMQLONG   pCompCode
                         , PMQLONG   pReason
                         )

before呼び出しのオブジェクト記述子には、アプリケーションによって指定されたオブジェクト名があります。アフターコールの同じ構造には、コール中に解決されたQMgrとキューの名前があります。PUT1はオープン、プット、クローズを1つのステップで実行するため、キュー名を解決する必要があります。ただし、個別のopen、put(、put ...)、close呼び出しの場合、名前解決はopen中に1回だけ発生します。

/var/mqm/sampプログラム内またはプログラムC:\Program Files (x86)\IBM\WebSphere MQ\tools\c\Samplesのサンプルをご覧くださいamqsaxe0.c

于 2012-09-16T02:40:29.043 に答える