0

そのメッセージがキューの最初ではない場合でも、CorrelationIdによってキューからメッセージをフィルタリングして取得できますか?

4

1 に答える 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 に答える