Search code examples
javaspringrabbitmqspring-amqpspring-rabbit

Recreate all connections of spring rabbit CachingConnectionFactory


I have a CachingConnectionFactory with multiple addresses. When one broker goes down, it connects with the second. Now, when the broker comes up again, I need to destroy existing connections and reconnect to it. But CachingConnectionFactory doesn't have any start, stop methods, instead has only destroy, which might render the factory unusable(?).

Config:

<bean id="testConnFactory" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
    <property name="addresses" value="rabbit1,rabbit2" />
    <property name="cacheMode" value="CONNECTION" />
    <property name="connectionCacheSize" value="${connection.cache.size}" />
</bean>

Is there any way to do this, programatically?


Solution

  • Calling destroy() is safe; the connection(s) will be reset and re-established the next time a component wants one.

    Bear in mind, though, that this will impact any in-process operations.

    We should probably add a less scary method, such as resetConnection() like we have with the Spring JMS connection factory.