#java #spring #apache-tomee #tomee-8
#java #весна #apache-tomee #tomee-8
Вопрос:
Я нахожусь в процессе обновления приложения, которое работало на TomEE 7, до TomEE 8, и при этом мы начали получать ошибки в отношении наших контейнеров прослушивателя сообщений Spring. TomEE 8 запускает Apache Active MQ 5.16, где TomEE 7 запускает Apache Active MQ 5.15.13.
В течение весны мы получаем фабрику соединений через поиск JNDI, который определен в нашем tomee.xml следующим образом
<tomee>
<Connector id="resources/jms/ConnectionFactory" type="javax.jms.ConnectionFactory">
ResourceAdapter=ActiveMQResourceAdapter
TransactionSupport xa
PoolMaxSize 10
PoolMinSize 0
ConnectionMaxWaitMilliseconds 15000
ConnectionMaxIdleMinutes 15
MaxSessions=5
</Connector>
<Resource id="ActiveMQResourceAdapter" type="ActiveMQResourceAdapter">
BrokerXmlConfig=xbean:file:conf/activemq.xml
ServerUrl=tcp://localhost:61616
</Resource>
</tomee>
В течение весны мы получаем фабрику соединений следующим образом
<jee:jndi-lookup id="jmsFactory" jndi-name="jms/ConnectionFactory" expected-type="javax.jms.ConnectionFactory" />
DefaultMessageListenerContainers настроены следующим образом
<jms:listener-container container-type="default" connection-factory="jmsFactory" client-id="clientId" cache="connection" destination-type="durableTopic" transaction-manager="transactionManager">
<jms:listener id="responses" destination="response" ref="msgHandler" />
</jms:listener-container>
И все это работает, как и ожидалось, на TomEE 7, однако теперь, когда мы перешли на TomEE 8, наши DefaultMessageListenerContainers выдают следующее исключение
[org.springframework.jms.listener.DefaultMessageListenerContainer] - Could not refresh JMS Connection for destination 'response' - retrying using FixedBackOff{interval=5000, currentAttempts=9, maxAttempts=unlimited}. Cause: Setting clientID on a used Connection is not allowed
Очевидно, что мы делаем что-то неправильное с обновлением, как правильно настроить DMLC с долговременными темами с помощью транзакции, управляемой JTA?
Комментарии:
1. Оказывается, это не связано с тем, являются ли подписки долговременными или нет. Кажется, что-то не так с количеством слушателей, которых я настроил. Все еще копаю, но пока мне ничего не бросается в глаза.
Ответ №1:
После дальнейшего тестирования я смог выяснить, что проблема была связана с максимальным размером пула, настроенным на фабрике соединений в tomee.xml . Увеличив это число, я смог преодолеть эту проблему.