我使用wmqjava示例程序连接到MQ管理器并将消息放入REQUEST队列并从RESPONSE队列获取响应。
我可以放置并获取消息。 当有多个消息到达RESPONSE QUEUE时,我无法得到正确的消息。
请告知是否有办法将请求和响应关联起来。
还请建议是否建议采用这种方法。
答案 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);