コールバック - 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 */

使用上の注意

  1. コールバック出口は、コンシューマーが呼び出される前、およびコンシューマーのコンシューマー関数が完了した後に呼び出されます。 MQMD 構造体と MQGMO 構造体は変更可能ですが、前出口で値を変更しても、キューからのメッセージの取り出しは再駆動されません。これは、コンシューマー関数に送信されるはずのキューからメッセージが既に除去されているためです。