ActiveMQ 및 Spring의 CachingConnectionFactory
에 문제가 있습니다. 나는이처럼을 설정 해요 : ActiveMQ 및 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
뭔가 나쁜 일을 할 수도 궁금하네요 (예전 서버와 대화하는 제작자를 캐싱합니까?).
내가 여기서해야 할 일이 누락 되었습니까? 내 설정이 정상적으로 보였지만이 문제가있는 사람을 찾을 수 없습니다.