Java 解决IBM MQ独立应用程序中的MQRC 2195错误

Java 解决IBM MQ独立应用程序中的MQRC 2195错误,java,ibm-mq,mq,Java,Ibm Mq,Mq,已解决 我从中找到了答案 希望它能帮助其他有同样问题的人 我编写了一个从MQ队列读取消息的简单方法。 在循环中,我尝试读取消息(使用waitInterval)。从队列中成功读取消息后,返回2195返回码。我如何解决这个问题 这是我的代码的简化版本,没有异常处理或任何其他内容。 public static void main(String args[]) { MQException.logExclude(MQException.MQRC_NO_MSG_AVAILABLE);

已解决

我从中找到了答案

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


我编写了一个从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收入信息


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

比如:


用MQException.logExclude()注释掉这两行,只需使用:

MQException.log = null;

我必须面对这个问题,即使是我

MQException.log = null;
它仍然打印出“MQJE001:完成代码'2',原因'2195'

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

添加以下行以解决问题

MQDataException.log = null;

代码中没有出现异常。当它从队列中成功读取消息时,它会在执行“get”方法后自动写入。(不例外)
MQDataException.log = null;