【问题标题】:Messages getting overwritten on IBM MQ消息在 IBM MQ 上被覆盖
【发布时间】:2014-09-16 18:54:52
【问题描述】:

我正在发送 3 条消息

Message1 - 相关 id:5000

空消息(无正文/消息)-相关 id:5001

Message2 - 相关 id:5002

我的出站队列流程是这样的

Message1 - 相关 id:5000

Message1-correlation id:5001 => 之前的消息被空消息覆盖。*

Message2 - 相关 id:5002

上面的第二行不应该有 Message1,而是空的。有什么想法吗?

我的get方法

                mqGetMsgOpts = new MQGetMessageOptions();
                if (mqQueue != null)
                {
                    //Get options for the messsage                
                    mqGetMsgOpts.Options = MQC.MQGMO_BROWSE_FIRST | MQC.MQGMO_WAIT |  MQC.MQOO_INQUIRE;
                    mqGetMsgOpts.MatchOptions = MQC.MQMO_NONE;
                    mqGetMsgOpts.WaitInterval = 5000;  // 5 seconds limit for waiting
                }

              if (mqMsg.MessageLength > 0 && mqMsg.DataLength > 0)
              {
                messageData = mqMsg.ReadString(mqMsg.MessageLength);
              }

如果我不做长度检查,我会得到流阅读器相关的异常。

我的put方法

if(mqQueue==null)
  mqQueue = mqQMgr.AccessQueue("Queue Name", MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_SHARED | MQC.MQOO_INQUIRE);

   mqMsg.WriteString(message);

【问题讨论】:

    标签: c# .net ibm-mq


    【解决方案1】:

    我没有听说过消息在 WMQ 中被覆盖。我怀疑这一定是应用程序的问题。这行代码:

    mqGetMsgOpts.Options = MQC.MQGMO_BROWSE_FIRST | MQC.MQGMO_WAIT |  MQC.MQOO_INQUIRE;
    

    MQC.MQGMO_BROWSE_FIRST 选项将使 WMQ 始终返回满足 MQMD 结构中指定条件的第一条消息。如果稍后修改此选项以指定 MQGMO_BROWSE_NEXT 以读取队列中的下一条消息,我无法从您的代码 sn-p 中确定。

    您可以指定MQGMO_BROWSE_NEXT 选项而不是MQC.MQGMO_BROWSE_FIRST 来连续阅读消息。

    您还指定了MQC.MQOO_INQUIRE,这对 GMO 选项无效。您需要删除它。

    更多详情浏览选项是here

    【讨论】:

      【解决方案2】:

      我可以想象两个可能导致这种情况的问题。

      1. 您的放置应用程序没有为消息 2 发送空消息正文。
      2. 您的获取应用程序正在向您显示来自消息一的消息缓冲区。如果没有从 MQ 传递的消息缓冲区,您之前的消息缓冲区内容将保留。

      为了确定发生在您身上的情况,我建议您放置所有消息,但在运行示例获取它们之前,请运行类似提供的示例 amqsget 以排除 1 的可能性。

      然后您可以专注于应用程序中的获取缓冲区。如果 MQ 说返回消息的长度为零,请确保您没有使用它。

      【讨论】:

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