在Put MQ API Exit(之前或之後)有什麼方法可以獲取目標隊列的名稱(即調用「put」調用的隊列)。在PUT API中獲取隊列名稱API退出(MQ_PUT_EXIT)
我試着詢問Hobj
參數,但得到一個錯誤,說對象沒有用Inquiry選項打開(這是一個有效的可能性)。
我還檢查了ResolvedQName
字段pPutMsgOpts
參數,但那是空白。
是否有任何其他方法獲取目標隊列名稱?任何想法將不勝感激。
在Put MQ API Exit(之前或之後)有什麼方法可以獲取目標隊列的名稱(即調用「put」調用的隊列)。在PUT API中獲取隊列名稱API退出(MQ_PUT_EXIT)
我試着詢問Hobj
參數,但得到一個錯誤,說對象沒有用Inquiry選項打開(這是一個有效的可能性)。
我還檢查了ResolvedQName
字段pPutMsgOpts
參數,但那是空白。
是否有任何其他方法獲取目標隊列名稱?任何想法將不勝感激。
在調用PUT1或OPEN的MQXR_AFTER
期間可訪問的object descriptor中返回已解析隊列管理器和已解析隊列的名稱。
看一看示例程序`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
)
的對象描述調用之前有由應用程序指定的對象名稱。後續調用中的相同結構具有在調用期間解決的QMgr和隊列的名稱。由於PUT1執行打開,放置和關閉一步,它必須解析隊列名稱。然而,在單獨打開的情況下,放置(,放置...),關閉調用時,名稱解析僅在打開時出現一次。
請參閱/var/mqm/samp
或C:\Program Files (x86)\IBM\WebSphere MQ\tools\c\Samples
中的樣本,瞭解amqsaxe0.c
計劃。
感謝Rob的快速反應。非常感激!但我不確定如何訪問對象描述符。從PUT API出口的方法簽名中,只出現句柄對象(&Hobj)可用,而不是對象描述符。 MQ_PUT_EXIT(&ExitParms,&ExitContext,&Hconn,&Hobj,&pMsgDesc,&pPutMsgOpts,&BufferLength,&pBuffer,&CompCode,&Reason) – TomUrick
我對此短暫迴應表示歉意。我更新了它,希望有更好的解釋。 –
謝謝Rob!這非常有見地。我試圖將退出放在單獨(開放,放置,關閉)呼叫的場景中;並希望將put_exit限制爲單個隊列(在QM下存在的許多隊列中)。默認情況下,似乎在QM下爲所有隊列調用註冊的出口。所以如果我們想把put_exit限制在一個隊列中,我們該怎麼做呢?開放和退出呼叫之間是否存在關聯?我們可以比較對象句柄並期望它們相同嗎? – TomUrick