как установить максимальное количество повторных попыток подключения с помощью Spring AMQP

#spring-boot #spring-amqp

Вопрос:

У меня есть сценарий, в котором мой экземпляр rabbit mq не всегда доступен, и я хотел бы установить максимальное количество повторных попыток подключения, возможно ли это с amqp?

Пример,

 @Bean
public ConnectionFactory connectionFactory() {
  CachingConnectionFactory factory = new CachingConnectionFactory();
  factory.setUri("amqprl//");
  factory ../ try uri connection for 4 times max then fail if still no connection
  return factory;
}
 

Ответ №1:

Производители сообщений будут пытаться создать соединение только при отправке сообщения.

Потребители сообщений (контейнерные заводы) будут повторять попытку бесконечно.

Вы можете добавить a ConnectionListener в фабрику соединений и stop() контейнеры прослушивателей после некоторого количества сбоев.

 @FunctionalInterface
public interface ConnectionListener {

    /**
     * Called when a new connection is established.
     * @param connection the connection.
     */
    void onCreate(Connection connection);

    /**
     * Called when a connection is closed.
     * @param connection the connection.
     * @see #onShutDown(ShutdownSignalException)
     */
    default void onClose(Connection connection) {
    }

    /**
     * Called when a connection is force closed.
     * @param signal the shut down signal.
     * @since 2.0
     */
    default void onShutDown(ShutdownSignalException signal) {
    }

    /**
     * Called when a connection couldn't be established.
     * @param exception the exception thrown.
     * @since 2.2.17
     */
    default void onFailed(Exception exception) {
    }

}