Мы столкнулись со случайной ошибкой подтверждения при использовании сообщения JMS во время запуска jboss (сообщения Jms доставляются до того, как сервер правильно завершил запуск).
Сообщение правильно доставлено и обработано, но есть исключение NullPointerExceptionв адаптере ресурсов hornetQ после вызова метода EJB onMessage()
.
[Thread-269 (HornetQ-client-global-threads-1753625645)] ERROR o.h.ra.inflow.HornetQMessageHandler - Failed to deliver message
java.lang.NullPointerException: null
at org.hornetq.ra.inflow.HornetQMessageHandler.onMessage(HornetQMessageHandler.java:287) ~[na:na]
at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:983) ~[hornetq-core-client-2.2.13.Final.jar:na]
at org.hornetq.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:48) ~[hornetq-core-client-2.2.13.Final.jar:na]
at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1113) ~[hornetq-core-client-2.2.13.Final.jar:na]
at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100) [hornetq-core-2.2.13.Final.jar!/:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_80]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_80]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_80]
Проблема в том, что транзакция уже зафиксирована Spring transactionAspect
на стороне потребителя, но сервер JMS будет считать сообщение не подтвержденными так его повторно доставить.
Есть ли способ предотвратить доставку сообщений JMS (или сбой подтверждения) во время запуска сервера?(например, исправьте порядок развертывания для развертывания адаптера ресурсов hornetQ в конце)