I am testing the following scenario in Spring AMQP v1.4.2 and it fails to reconnect after a network disruption:
Set setRequestedHeartBeat to the ConnectionFactory and setMissingQueuesFatal(false) to SimpleMessageListenerContainer in order to retry to connect indefinitely. By default SimpleMessageListenerContainer setMissingQueuesFatal is set to true and only 3 retries will be done.
@Bean
public ConnectionFactory connectionFactory() {
final CachingConnectionFactory connectionFactory = new CachingConnectionFactory(getHost(), getPort());
connectionFactory.setUsername(getUsername());
connectionFactory.setPassword(getPassword());
connectionFactory.setVirtualHost(getVirtualHost());
connectionFactory.setRequestedHeartBeat(30);
return connectionFactory;
}
@Bean
public SimpleMessageListenerContainer listenerContainerCopernicusErrorQueue() {
final SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setQueueNames(myQueue().getName());
container.setMessageListener(messageListenerAdapterQueue());
container.setDefaultRequeueRejected(false);
container.setMissingQueuesFatal(false);
return container;
}