キューから特定メッセージを取り出すには,MQMD構造体のMsgIdおよびCorrelIdフィールドを使用してください。しかし,アプリケーションで明示的にこれらのフィールドを設定できるので,ユーザが指定した値でユニークなメッセージを識別できないこともあります。MsgIdおよびCorrelIdフィールドを指定する取り出しについて,次の表に示します。MQGET命令のGetMsgOptsパラメタにMQGMO_MSG_UNDER_CURSORを指定する場合,これらのフィールドは無視されます。
表10-1 MsgIdおよびCorrelIdフィールドを指定する取り出し
取り出されるメッセージ | MsgId | CorrelId |
---|---|---|
キューの最初のメッセージ | MQMI_NONE | MQCI_NONE |
MsgIdに合う最初のメッセージ | 0以外 | MQCI_NONE |
CorrelIdに合う最初のメッセージ | MQMI_NONE | 0以外 |
MsgIdとCorrelIdの両方に合う最初のメッセージ | 0以外 | 0以外 |
それぞれ,選択基準を満たす最初のメッセージが取り出されます。MQGMO_BROWSE_NEXTを指定する場合は,選択基準を満たす次のメッセージが取り出されます。
戻り時にMQGET命令はメッセージに関連するMsgIdとCorrelIdフィールドを設定します。
MQMD構造体のVersionフィールドに2を設定する場合は,GroupId,MsgSeqNumber,およびOffsetフィールドを使用できます。一致オプションと取り出されるメッセージについて,次の表に示します。
表10-2 一致オプションと取り出されるメッセージ
取り出されるメッセージ | 一致オプション |
---|---|
キューの最初のメッセージ | MQMO_NONE |
MsgIdに合う最初のメッセージ | MQMO_MATCH_MSG_ID |
CorrelIdに合う最初のメッセージ | MQMO_MATCH_CORREL_ID |
GroupIdに合う最初のメッセージ | MQMO_MATCH_GROUP_ID |
MsgSeqNumberに合う最初のメッセージ | MQMO_MATCH_MSG_SEQ_NUMBER |
Offsetに合う最初のメッセージ | MQMO_MATCH_OFFSET |