[SPRING] ActiveMQ 및 CachingConnectionFactory의 자동 연결 문제
SPRINGActiveMQ 및 CachingConnectionFactory의 자동 연결 문제
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이 매번 새 연결을 요청해야하므로 OK 여야합니다. 나는 CachingConnectionFactory가 뭔가 나쁜 일을하고 있는지 궁금해한다. (예전 서버와 대화하는 제작자를 캐싱하는 것)?
내가 여기서해야 할 일이 없어 졌니? 내 설정이 정상적으로 보였지만이 문제가있는 다른 사람을 찾을 수 없습니다.
해결법
-
==============================
1.내가 가지고있는 문제는 ActiveMQ가 다시 연결될 때 CachingConnectionFactory를 말하지 않아서 캐시 된 연결이 여전히 사용되고 있다는 것입니다. 나는 그것을 ActiveMQ의 PooledConnectionFactory로 바꾸었고 문제는 사라졌다.
내가 가지고있는 문제는 ActiveMQ가 다시 연결될 때 CachingConnectionFactory를 말하지 않아서 캐시 된 연결이 여전히 사용되고 있다는 것입니다. 나는 그것을 ActiveMQ의 PooledConnectionFactory로 바꾸었고 문제는 사라졌다.
-
==============================
2.참고로 두 개의 로컬 AMQ 중개자와 장애 조치 (failover) 사이에서이 시나리오 (두 생산자 / 소비자 연결 모두에 대해 CachingConnectionFactory 사용)를 테스트 한 결과 ...
참고로 두 개의 로컬 AMQ 중개자와 장애 조치 (failover) 사이에서이 시나리오 (두 생산자 / 소비자 연결 모두에 대해 CachingConnectionFactory 사용)를 테스트 한 결과 ...
그 말은 ... 나는 다른 컨슈머 연결 문제가 폴링 소비자 패턴을 사용할 때 볼 수 있습니다 ... 수동으로 연결 또는 뭔가를 닫아야합니다.
from https://stackoverflow.com/questions/5916638/autoreconnect-problem-with-activemq-and-cachingconnectionfactory by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring에서 런타임에 속성 값을 변경하는 방법 (0) | 2019.07.17 |
---|---|
[SPRING] 봄 부팅 @RepositoryEventHandler가 호출되지 않았습니다. (0) | 2019.07.17 |
[SPRING] Spring-boot : 찾을 수없는 'entityManagerFactory'라는 이름의 bean이 필요합니다. (0) | 2019.07.17 |
[SPRING] Spring @Async : LAZY 콜렉션의 null 동면 세션 (0) | 2019.07.17 |
[SPRING] bean이 존재할 때만 주입하는 방법 (0) | 2019.07.17 |