. net应用程序中用于IBM MQ消息的请求响应消息映射

本文关键字:消息 请求 响应 映射 MQ 应用程序 用于 IBM net | 更新日期: 2023-09-27 18:17:29

App1 -将发送消息给q1App2 -将发送消息给q2

App1将向q1发送消息,App1将从q2获取消息

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

我想知道,我如何确保,我得到响应相同的请求请让我知道我如何以及在哪里维护Id的请求和响应。

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

目前我正在做的是从请求消息生成Id,并把它放在关联Id字段,而发送消息;获得响应后,我再次使用相同的公式生成Id(我已用于请求消息Id),并比较两个相关的Id,如果它们匹配,那么响应是针对相同的请求。

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

请提供一些关于这方面的知识

. net应用程序中用于IBM MQ消息的请求响应消息映射

看看这个回应。如果您使用的是XMS .NET,那么以下两个示例将随产品在<"mqinstall"> 'Tools'dotnet'samples'cs'xms'simple'wmq目录演示请求/应答消息传递模式。

SimpleRequestor.cs—Requester

SimpleRequestorServer.cs—Responder

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

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

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