コールバック - MQ_CALLBACK_EXIT
MQ_CALLBACK_EXIT は、コールバック処理の前 および後 に実行する出口関数を提供します。 関数 ID MQXF_CALLBACK に出口理由 MQXR_BEFORE および MQXR_AFTER を指定して、コールバック呼び出し前 およびコールバック呼び出し後 出口関数を登録します。
この関数へのインターフェースは、以下のとおりです。
MQ_CALLBACK_EXIT (&ExitParms, &ExitContext, &Hconn, &pMsgDesc, &pGetMsgOpts,
&pBuffer, &pMQCBContext)
パラメーターは、以下のとおりです。- ExitParms (MQAXP) - 入出力
- 出口パラメーター構造体
- ExitContext (MQAXC) - 入出力
- 出口コンテキスト構造体
- Hconn (MQHCONN) - 入出力
- 接続ハンドル
- pMsgDesc
- メッセージ記述子
- pGetMsgOpts
- MQGET のアクションを制御するオプション
- pBuffer
- メッセージ・データが入れられる区域
- pMQCBContext
- コールバックのコンテキスト・データ
C 言語呼び出し
キュー・マネージャーは、以下の変数を論理的に定義します。
MQAXP ExitParms; /* Exit parameter structure */
MQAXC ExitContext; /* Exit context structure */
MQHCONN Hconn; /* Connection handle */
PMQMD pMsgDesc; /* Message descriptor */
PMQGMO pGetMsgOpts; /* Options that define the operation of the consumer */
PMQVOID pBuffer; /* Area to contain the message data */
PMQCBC pContext; /* Context data for the callback */
その後、キュー・マネージャーは以下のように出口を論理的に呼び出します。MQ_SUBRQ_EXIT (&ExitParms, &ExitContext, &Hconn, &pMsgDesc, &pGetMsgOpts, &pBuffer,
&pContext);
出口は以下の C 関数プロトタイプと一致していなければなりません。void MQENTRY MQ_CALLBACK_EXIT (
PMQAXP pExitParms; /* Exit parameter structure */
PMQAXC pExitContext; /* Exit context structure */
PMQHCONN pHconn; /* Connection handle */
PPMQMD ppMsgDesc; /* Message descriptor */
PPMQGMO ppGetMsgOpts; /* Options that define the operation of the consumer */
PPMQVOID ppBuffer; /* Area to contain the message data */
PPMQCBC ppContext;) /* Context data for the callback */
使用上の注意
- コールバック出口は、コンシューマーが呼び出される前、およびコンシューマーのコンシューマー関数が完了した後に呼び出されます。 MQMD 構造体と MQGMO 構造体は変更可能ですが、前出口で値を変更しても、キューからのメッセージの取り出しは再駆動されません。これは、コンシューマー関数に送信されるはずのキューからメッセージが既に除去されているためです。