Tengo un problema con ActiveMQ y Spring's CachingConnectionFactory
. Los estoy configuración de la siguiente manera:Problema de Autoreconnect con ActiveMQ y 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
está utilizando el transporte de conmutación por error:
failover:(tcp://firstbox:6166,tcp://secondbox:6166)?timeout=3000
El problema que estoy teniendo es que si un cuadro se cae, hay que empezar a enviar mensajes de el otro, pero parece seguir usando la conexión anterior (cada envío expira). Si reinicio el programa, se volverá a conectar y todo funciona.
Según tengo entendido, el ActiveMQConnectionFactory
debería arreglarse a sí mismo (reconectarse a un nuevo cuadro), y el JmsTemplate
debería solicitar una nueva conexión cada vez, por lo que debería estar bien. Me pregunto si el CachingConnectionFactory
podría estar haciendo algo malo (¿almacenar en caché a un productor que hable con el servidor anterior?).
¿Me falta algo que tengo que hacer aquí? Mi configuración parece bastante normal, pero no puedo encontrar a nadie más teniendo este problema.