将请求消息关联到Java Client中的resp消息以访问MQ Series时出现问题

时间:2013-01-30 15:10:33

标签: ibm-mq

我使用wmqjava示例程序连接到MQ管理器并将消息放入REQUEST队列并从RESPONSE队列获取响应。

我可以放置并获取消息。 当有多个消息到达RESPONSE QUEUE时,我无法得到正确的消息。

请告知是否有办法将请求和响应关联起来。

还请建议是否建议采用这种方法。

1 个答案:

答案 0 :(得分:3)

关联ID是关联请求和响应消息的最佳方式。您需要执行以下操作:

请求方结束:
1)在发送请求消息后,缓存请求消息的消息ID 2)获取消息时,在MQGetMessageOptions.matchOptions字段中指定MQMO_MATCH_CORREL_ID,并将上述消息id指定为匹配值。

在响应者端:
1)从请求消息中检索消息ID 2)在发送响应消息时,将响应消息的Correlation Id设置为请求消息的消息ID。

这是关联请求和响应消息的方法。请求者的小片段。

        // Send request message
        MQMessage requestMessage = new MQMessage();
        requestMessage.writeUTF("Request Message");
        reqQueue.put(requestMessage);

        // Receive response
        MQMessage responseMessage = new MQMessage();
        responseMessage.correlationId = requestMessage.messageId;
        MQGetMessageOptions gmo = new MQGetMessageOptions();
        gmo.matchOptions = CMQC.MQMO_MATCH_CORREL_ID;

        respQueue.get(responseMessage,gmo);