У меня асинхронный 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.