I have a Use Case of managing Spring AMQP client message resiliency in case of RabbitMQ server connectivity down,
For the same I have used Spring Retry
RabbitTemplate template = // get template from some bean
RetryTemplate retryTemplate = new RetryTemplate();
ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();
// 10 sec
backOffPolicy.setInitialInterval(10000);
// 1 hr
backOffPolicy.setMultiplier(360.0);
// 1 hr max interval
backOffPolicy.setMaxInterval(3600001);
retryTemplate.setBackOffPolicy(backOffPolicy);
template.setRetryTemplate(retryTemplate);
template.convertAndSend("Direct-Exchange",
"Test.Routing.Key", AMQPMessage);
But when a try to test it and bring broker down it hangs at template.convertAndSend() and never recovers even when RabbitMQ broker connectivity is restored