2012-08-15 108 views

回答

1

是的。您必須在MQGetMessageOptions上使用MQGMO_MATCH_CORREL_ID匹配選項。

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用於涉及兩個消息,通常是請求和應答消息。所以這樣做。

1)客戶端應用程序發送請求消息。發送消息後緩存發送消息的messageId。

2)將此messageId用作消息選擇的correlationId。

recvdResponseMsg.CorrelationId = requestMsg.MessageId; 
gmo.MatchOptions = MQC.MQMO_MATCH_CORREL_ID; 

3)在所述服務器應用(其處理請求消息),發送響應消息時,只複製請求消息發送到響應消息的的correlationID的MESSAGEID。

responseMsg.CorrelationId = requestMsg.MessageId; 
+0

謝謝你的回答。如果我在發送消息之前設置了MQC.MQRO_COPY_MSG_ID_TO_CORREL_ID選項,而不是getMsg.CorrelationId = correlationId ;? – sada 2012-08-16 06:02:43

+0

請參閱我上面的編輯。 – Shashi 2012-08-16 07:16:01

+0

非常感謝。 – sada 2012-08-17 19:49:11