2013-05-15 5 views
1

решаемыхУстранения MQRC 2195 ошибок в IBM MQ отдельного приложении

Я нашел ответ от 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', Reason '2195'.
2013-05-15 11:44:27 Доход тзд

ответ

0

Если вы не хотите этого, то в вашем поймать блока, проверьте код причины, за исключением является 2195 и писать код соответственно.

Как:

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

     } 
    else 
    { 
     throw mqe; 
     } 

} 
+0

В коде отсутствует исключение. Он записывается после выполнения метода «get» автоматически, когда он успешно считывает сообщение из очереди. (НЕ ИСКЛЮЧЕНИЕ) – happyNewLife

2

Закомментируйте 2 линии с MQException.logExclude() и просто использовать:

MQException.log = null; 
+0

нет, это не помогает, но спасибо. – happyNewLife

0

У меня возникает проблема, даже я установил

MQException.log = null; 

Он по-прежнему распечатывается «MQJE001: Код завершения 2«, причина «2195». «

В конце концов, я узнал, что строка печатается из MQDataException.

Добавлена ​​строка ниже, чтобы решить проблему.

MQDataException.log = null; 
Смежные вопросы