Put MQ API Exit(前または後)には、ターゲットキュー(つまり、「put」呼び出しが呼び出されたキュー)の名前を取得する方法があります。
パラメータを照会しようとしましHobj
たが、照会オプションでオブジェクトが開かれていないというエラーが発生しました(これは有効な可能性です)。
ResolvedQName
パラメータのフィールドもチェックpPutMsgOpts
しましたが、空白でした。
ターゲットキュー名を取得する他の方法はありますか?どんなアイデアでも大歓迎です。
解決されたキュー・マネージャーおよび解決されたキューの名前は、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
。