【问题标题】:Request Response message mapping in .NET Application for IBM MQ messagesIBM MQ 消息的 .NET 应用程序中的请求响应消息映射
【发布时间】:2016-01-10 01:24:09
【问题描述】:

App1 – 将消息发送到 q1 App2 – 将向 q2 发送消息

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

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

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

请提供代码 sn-p 或我可以关联的链接。

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

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

请提供一些这方面的知识

【问题讨论】:

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


【解决方案1】:

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

对于请求消息是使用消息 ID 还是相关 ID,您的描述有点不清楚。您当然可以选择对两者都使用相关 ID,并改用 MQRO_PASS_CORREL_ID。您只需要确保您的响应应用程序按照报告选项的指示执行操作即可。

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

【讨论】:

    【解决方案2】:

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

    SimpleRequestor.cs -- 请求者

    SimpleRequestorServer.cs -- 响应者

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 2020-01-12
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多