1

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

我可以发送和接收消息。当有多个消息到达响应队列时,我无法获得正确的消息。

请告知是否有一种方法可以在这种方法中关联请求和响应。

还请告知是否推荐这种方法。

4

1 回答 1

3

Correlation 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);
于 2013-01-30T17:09:56.777 回答