そのメッセージがキューの最初ではない場合でも、CorrelationIdによってキューからメッセージをフィルタリングして取得できますか?
1669 次
1 に答える
1
はい。MQGMO_MATCH_CORREL_ID
でマッチングオプションを使用する必要がありますMQGetMessageOptions
。
MQMessage getMsg = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.MatchOptions = MQC.MQMO_MATCH_CORREL_ID;
// Copy correlationID of the message you want to receive
getMsg.CorrelationId = correlationId;
queue.Get(getMsg, gmo);
編集:
CorrelationIdは、2つのメッセージ、通常は要求メッセージと応答メッセージを関連付けるために使用されます。したがって、このように行われます。
1)クライアントアプリケーションがリクエストメッセージを送信します。メッセージを送信した後、送信されたメッセージのmessageIdをキャッシュします。
2)このmessageIdをメッセージ選択のcorrelationIdとして使用します。
recvdResponseMsg.CorrelationId = requestMsg.MessageId;
gmo.MatchOptions = MQC.MQMO_MATCH_CORREL_ID;
3)サーバーアプリケーション(要求メッセージを処理する)で、応答メッセージを送信するときに、要求メッセージのmessageIdを応答メッセージのcorrelationIdにコピーするだけです。
responseMsg.CorrelationId = requestMsg.MessageId;
于 2012-08-16T04:39:35.447 に答える