HornetQ Resource Adapter - предотвращает потребление сообщений до завершения запуска JBoss 7 - PullRequest
0 голосов
/ 02 октября 2018

Мы столкнулись со случайной ошибкой подтверждения при использовании сообщения 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 в конце)

...