Bean-компонент, управляемый сообщениями, с отключенной очередью сообщений Java
-
20-09-2019 - |
Вопрос
У меня возникла следующая проблема при развертывании моего приложения.
Он использует JMS и удаленный openMQ для связи между серверами.Проблема в том, что соединение не является полностью надежным, поэтому оно может быть как вверх, так и вниз.Для повторного подключения я установил свойство jms reconnect glassfish, чтобы оно переподключалось, если в какой-то момент соединение потеряется.Проблема возникает, когда я пытаюсь развернуть приложение, но соединения нет.Похоже, оно продолжает повторять попытки подключения, но приложение не завершает развертывание, пока соединение не станет доступным.
Можно ли каким-либо образом настроить его, чтобы развертывание продолжалось даже при отсутствии соединения и повторяло попытки до тех пор, пока не будет доступно соединение?
Большое спасибо.
Редактировать:Я пытаюсь запустить инициализацию MDB в другом потоке.Я попробовал оба
Я пытаюсь назначить MDB другой поток, изменив sun-ejb.jar.xml двумя способами.
<bean-pool>
<steady-pool-size>1</steady-pool-size>
<resize-quantity>1</resize-quantity>
<max-pool-size>1</max-pool-size>
<pool-idle-timeout-in-seconds>60</pool-idle-timeout-in-seconds>
</bean-pool>
а также с
<use-thread-pool-id>a-new-thread-pool</use-thread-pool-id>
Но мне не повезло.Похоже, он ждет завершения этого потока, поскольку похоже, что он получает новый поток, но он ждет завершения этого потока, чтобы завершить запуск приложения, поэтому в моем случае приложение не развертывается правильно.
Редактировать 2 Я также пытался запустить службу jms в другом потоке...
asadmin create-resource-adapter-config --threadpools a-new-thread-pool jmsra
Тоже не повезло.
Решение
С поставщиком JMS по умолчанию Glassfish это невозможно.Наконец мне удалось это сделать, изменив адаптер JCA на
Другие советы
Можете ли вы подумать о создании отдельного потока, который подключается к JMS, чтобы основные приложения продолжали работать без блокировки.