【问题标题】:Resolving MQRC 2195 errors in IBM MQ standalone application解决 IBM MQ 独立应用程序中的 MQRC 2195 错误
【发布时间】:2013-05-15 11:29:03
【问题描述】:

已解决

我从IBM Technote IZ66146找到了答案

希望它能帮助其他有同样问题的人。


我编写了一个从 MQ 队列读取消息的简单方法。
在一个循环中,我尝试读取一条消息(使用 waitInterval)。从队列中成功读取消息后,返回 2195 返回码。我该如何解决这个问题?

这是我的代码的简化版本,没有异常处理或任何其他内容。

   public static void main(String args[]) {
    MQException.logExclude(MQException.MQRC_NO_MSG_AVAILABLE);
    MQException.logExclude(MQException.MQRC_UNEXPECTED_ERROR);
    MQException.log = null;
            while (true) {
        incomeDeployMsg = readFromQueue(waitReadInterval);
                    System.out.println(dateFormater.format(new Date()) + " Income msg");
            }
   } 
    public String readFromQueue(int waitInterval) throws MQException{
    MQMessage message = new MQMessage();
    try {
        if (m_inQueue == null || !m_inQueue.isOpen())
            m_inQueue = m_mqQmgr.accessQueue(m_inQueueName, CMQC.MQOO_INQUIRE + CMQC.MQOO_FAIL_IF_QUIESCING + CMQC.MQOO_INPUT_SHARED);
        message.messageId = CMQC.MQMI_NONE;
        MQGetMessageOptions gmo = new MQGetMessageOptions();
        gmo.options = CMQC.MQGMO_WAIT;
        gmo.waitInterval = waitInterval;
        m_inQueue.get(message, gmo);
                    return message.readStringOfCharLength(message.getMessageLength());
    } catch (MQException mqe) {
        throw mqe;
    } finally {
        message.clearMessage();
    }
}

结果的第一行不是我的代码!!!我认为是 IBM 的类在标准输出上打印出来。我该如何解决这个错误?

结果:

MQJE001:完成代码“2”,原因“2195”。
2013-05-15 11:44:27 收入消息

【问题讨论】:

    标签: java ibm-mq mq


    【解决方案1】:

    用 MQException.logExclude() 注释掉这两行,然后使用:

    MQException.log = null;
    

    【讨论】:

      【解决方案2】:

      如果你不想这样,那么在你的 catch 块中,检查异常的原因代码是否是 2195 并相应地编写代码。

      喜欢:

      catch (MQException mqe) {
           if(mqe.reasonCode==2195)
           {
      /* DO NOTHING FOR THIS ERROR */
      
            }
           else
           {  
              throw mqe;
            }
      
      }
      

      【讨论】:

      • 代码中没有引发异常。它是在从队列中成功读取消息时自动执行“get”方法后写入的。 (不例外)
      【解决方案3】:

      即使我设置了,我也遇到了问题

      MQException.log = null;
      

      它仍然打印出“MQJE001:完成代码'2',原因'2195'。”

      最后我发现,该行是从 MQDataException 打印出来的。

      添加以下行来解决问题。

      MQDataException.log = null;
      

      【讨论】:

        猜你喜欢
        • 2015-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-21
        • 2015-04-17
        • 1970-01-01
        • 2014-05-08
        相关资源
        最近更新 更多