在 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 在一个步骤中执行打开、放置和关闭,因此它必须解析队列名称。但是,在单独的 open、put(, put...)、close 调用的情况下,名称解析仅在 open 期间发生一次。
请参阅程序中/var/mqm/samp
或C:\Program Files (x86)\IBM\WebSphere MQ\tools\c\Samples
程序中的示例amqsaxe0.c
。