У меня проблема с ActiveMQ и Spring'ом CachingConnectionFactory
.Я настраиваю их следующим образом:
<!-- A connection to ActiveMQ -->
<bean id="myConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="${jms.url}"/>
<property name="userName" value="${jms.username}"/>
<property name="password" value="${jms.password}"/>
</bean>
<!-- A cached connection to wrap the ActiveMQ connection -->
<bean id="myCachedConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="myConnectionFactory"/>
<property name="sessionCacheSize" value="10"/>
<property name="reconnectOnException" value="true"/>
</bean>
<!-- A destination in ActiveMQ -->
<bean id="myDestination"
class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="${jms.queue}" />
</bean>
<!-- A JmsTemplate instance that uses the cached connection and destination -->
<bean id="myProducerTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="myCachedConnectionFactory"/>
<property name="defaultDestination" ref="myDestination"/>
</bean>
jms.url
использует транспорт для переключения при отказе:
failover:(tcp://firstbox:6166,tcp://secondbox:6166)?timeout=3000
Проблема, с которой я столкнулся, заключается в том, что если один ящик выйдет из строя,мы должны начать отправлять сообщения с другой стороны, но, похоже, все еще используется старое соединение (время каждой отправки истекло).Если я перезапущу программу, она снова подключится, и все будет работать.
Насколько я понимаю, ActiveMQConnectionFactory
должен исправить себя (переподключиться к новой коробке), а JmsTemplate
должен запросить новуюсвязь каждый раз, так что должно быть в порядке.Мне интересно, может ли CachingConnectionFactory
делать что-то плохое (кэширование продюсера, который общается со старым сервером?).
Я что-то упустил, что мне нужно сделать здесь?Мои настройки кажутся вполне нормальными, но я не могу найти кого-то еще с этой проблемой.