Повторите попытку подключения к RabbitMQ и MongoDB в SpringBoot

Я использую Spring и хочу повторить попытку подключения к RabbitMQ и MongoDB в случае сбоя.
Я знаю, что это работает для базы данных sql следующим образом: https://github.com/spring-projects/spring-boot/issues/4779#issuecomment-305482782

Однако я не знаю, какие классы использовать для RabbitMQ и MongoDB.

Я также пытался обернуть ConnectionFactory для RabbitMQ, но у AbstractConnectionFactory есть некоторые окончательные методы, которые я не могу переопределить, чтобы передать вызов делегату-фабрике.


person stm    schedule 15.05.2018    source источник


Ответы (1)


Для RabbitMQ, на стороне потребителя, соединение будет восстановлено автоматически на основе конфигурации контейнера слушателя (по умолчанию каждые 5 секунд он будет пытаться переподключиться).

Для публикации сообщений вы можете настроить соответствующим образом настроенный RetryTemplate (из spring-retry) в файле RabbitTemplate.

Для Mongo вы можете использовать аннотацию RetryTemplate или @Retryable в своем коде.

person Gary Russell    schedule 15.05.2018
comment
Спасибо за советы. Что в вашем коде вы имеете в виду, когда я использую метод mongorepository? - person stm; 18.05.2018
comment
Да; поместите вызов в метод @Retryable или сделайте вызов в RetryTemplate.execute(c -> { ... }). - person Gary Russell; 18.05.2018