javax.jms.JMSException: MQJMS2002: не удалось получить сообщение из очереди MQ - PullRequest
1 голос
/ 30 ноября 2011

У меня асинхронный JMS-приемник, закодированный таким образом (очевидные детали отсутствуют):

connection = connectionFactory.createConnection();
connection.setExceptionListener(new ExceptionListener() {
    @Override
    public void onException(JMSException ex) {
        logger.info("JMS exception " + ex.getMessage());
    }
});

session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
consumer = session.createConsumer(queue);
consumer.setMessageListener(listener);
logger.info("Waiting for a message");
connection.start();

Все запускается хорошо, но когда приходит сообщение, я получаю JMSException, которое получает ExceptionListener. Исключение говорит:

javax.jms.JMSException: MQJMS2002: failed to get message from MQ queue.
at com.ibm.msg.client.wmq.v6.jms.internal.ConfigEnvironment.newException(ConfigEnvironment.java:374)
at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.getMessage(MQMessageConsumer.java:3047)
at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.receiveAsync(MQMessageConsumer.java:4042)
at com.ibm.msg.client.wmq.v6.jms.internal.SessionAsyncHelper.run(SessionAsyncHelper.java:507)
at java.lang.Thread.run(Thread.java:662)

Связанное исключение просто сообщает NullPointerException и не дает никаких других подробностей.

Я бродил по интернету в поисках ответа, но я не эксперт по MQ и ни к чему не привел. Люди из промежуточного программного обеспечения здесь не очень полезны, и заставить их что-либо делать оказывается медленным и болезненным. У меня такое впечатление, что это связано с настройкой очереди, но я чувствую, что цепляюсь за соломинку.

Если у кого-нибудь есть какие-либо предложения, я был бы признателен, особенно если это то, чем я могу вооружиться и противостоять промежуточному ПО

Я использую клиентские банки MQ 7.0.0.2.

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

Смущающе, я только что обнаружил, что у части «очевидного» кода, который я пропустил выше, был блок finally, закрывающий соединение вскоре после его открытия.Не уверен, почему сообщение об ошибке должно быть настолько расплывчатым, сообщая, что соединение было закрыто, спасло бы меня от многочасовых царапин.

Спасибо тем, кто нашел время, чтобы прочитать мою проблему!

1 голос
/ 01 декабря 2011

Наряду с исключением, возможно, указан код причины MQ. Это могло бы помочь сэкономить ваше время.

0 голосов
/ 30 ноября 2011

Эта ссылка на службу поддержки на веб-сайте IBM, похоже, относится к вашей проблеме.Хотя в нем упоминаются классы версии 6, а не 7, трассировка стека достаточно похожа, за исключением номеров строк.Очевидно, причиной могут быть атрибуты, появляющиеся в XML, который используется для инкапсуляции информации заголовка.

Являются ли используемые вами клиентские файлы той же версии, что и экземпляр сервера Websphere MQ?Возможно, вам придется убедить ребят из промежуточного программного обеспечения обновить до версии не ниже 7.0.1.0 и установить последние пакеты исправлений, а затем убедитесь, что вы используете клиентские jar-файлы, подходящие для этой версии.Начиная с 7.0.1.0 были исправлены ошибки при разборе заголовка.

...