请求.NET Application for IBM MQ消息中的响应消息映射

时间:2015-10-12 14:07:35

标签: c# asp.net ibm-mq mq

App1 - 将消息发送到q1 App2 - 将消息发送到q2

App1将消息发送到q1,App1将从q2

获取消息

q1和q2属于同一个队列管理器,它们是本地队列

我想知道我如何确保,我收到相同请求的回复 请告诉我如何以及在哪里维护Id的请求和响应。

请提供代码段或我可以联系的链接。

目前我正在做的是从请求消息生成Id并在发送消息时将其放入Correlation id字段;在得到回复之后,我再次使用相同的公式(我用于请求消息ID)生成Id并比较两个相关的id(如果它们匹配),则响应是针对相同的请求。

我必须立即向用户显示响应,这样如果当前有多个用户登录到Request Application,那么如何确保响应将根据请求进行匹配。 (因为从队列队列中读取消息后将删除消息,即使我将其存储在数据库中如何提供即时响应
到用户)

请提供一些关于此的知识

2 个答案:

答案 0 :(得分:0)

看看这个response。如果您使用的是XMS .NET,则<“mqinstall”> \ Tools \ dotnet \ samples \ cs \ xms \ simple \ wmq目录下的产品随附的以下两个示例演示了请求/回复消息传递模式。

SimpleRequestor.cs - 请求者

SimpleRequestorServer.cs - 响应者

答案 1 :(得分:0)

标准做法是记住请求的消息ID并在响应的相关ID中查找它,然后让正在响应的应用程序将消息Id从请求消息复制到响应的相关ID中。阅读知识中心(或谷歌可能指向您的网站上的其他地方)的MQRO_COPY_MSG_ID_TO_CORREL_ID。

您的说明是否使用请求消息的消息ID或相关ID有点不清楚。您当然可以选择为两者使用相关ID,而是使用MQRO_PASS_CORREL_ID。您只需要确保您的响应应用程序执行报告选项所要求的操作。

如果您在响应中传回原始请求ID,那么您可以比较两者并知道它是对特定请求消息的响应。这当然要求每个请求消息都有一个唯一的消息ID - 如果您愿意,IBM MQ将很乐意为您生成这些消息ID。