के साथ Autoreconnect समस्या मुझे ActiveMQ और Spring's 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
कुछ खराब कर रहा है (एक निर्माता को कैश करना जो पुराने सर्वर से बात करता है?)।
क्या मुझे कुछ याद आ रहा है जो मुझे यहां करने की ज़रूरत है? मेरा सेटअप काफी सामान्य लगता है, लेकिन मुझे इस समस्या से कोई और नहीं मिल रहा है।