Spring Boot и RabbitMQ: как определить, когда приложение повторно подключилось к брокеру

У меня есть приложение для весенней загрузки, которое действует как производитель и отправляет сообщения через RabbitMQ. В случае, если брокер не работает, существует ли какой-то прослушиватель, который будет определять, когда брокер снова работает, чтобы повторить попытку отправки неудачных сообщений?

Спасибо!


person Nix    schedule 01.09.2020    source источник


Ответы (1)


Нет, если вы только создаете сообщения. Вы можете добавить метод @Scheduled@EnableScheduling), который время от времени пытается создать соединение, и вы можете добавить ConnectionListener в фабрику соединений, которая будет вызываться при открытии нового соединения.

Поскольку соединение является общим, ничему не повредит выполнение этой запланированной задачи, когда соединение уже открыто ...

@Scheduled(fixedDelay = 10000)
public void tryConn() {
    try {
        this.cachingConnectionFactory.createConnection().close();
    }
    catch (Exception e) {
    }
}

На стороне потребителя контейнер слушателя будет продолжать попытки.

person Gary Russell    schedule 01.09.2020